2017-04-17 8 views
0

私はRailsでかなり新しいです。私があなたを助けてくれることを願っています。PSQL Railsに格納された配列にアクセス

私は配列にアクセスしてその配列の各要素を出力したいと思います。私がしようとする今、このコードで

- @recipes.each do |recipe| 
    %h2= recipe.name 
    %p= recipe.description 
    %p= recipe.cuisine_id 
    %p= recipe.ingredients 

recipe.ingredientsはブラウザ

に印刷

- recipe.ingredients.each do |ingredient| 
     %p= ingredient 
それはちょうど列である一方で、成分表を照会しようと

テーブルレシピ。 to_sを使用した場合も同じ結果になります。

は、あなたが何かアドバイスはありますか?

ありがとう!

# app/models/recipe.rb 
class Recipe < ApplicationRecord 
    ... 
    alias_attribute :new_alias, :column_name 
end 

あなたがそれにアクセスすることができますこの方法:私はあなたがあなたのrecipesモデル内ingredients属性とも多分あなたはrecipe.ingredients列を「エイリアシング」しようとすることができ、ingredientsと呼ばれるモデルを持って見てきたように

+1

'%p = recipe.ingredients'の出力は何ですか?それは単なる文字列ですか? –

答えて

0

あなたが設定した古いものか別名の両方の名前を持つ属性。

- recipe.new_alias.each do |ingredient| 
     %p= ingredient 

そしてまた、あなたは次のように、ActiveRecordのを使用して別名でその列を選択することができます。

あなたのビューで
@recipes = Recipe.select('description, cuisine_id, ingredient AS some_alias') 

そして:

- recipe.some_alias.each do |ingredient| 
     %p= ingredient 
+0

感謝セバスチャン!これは実際に私が探していたものでした! –

0

あなたは明確なrecipeingredientモデルを持っていますか?あなたの説明から、レシピは成分との関係がhas_manyのように聞こえます。そうであれば、複数のクエリが完全に意味をなす。

まだロードされていないモデルにアクセスしようとすると、Railsによってクエリが実行されます。これは、あなたが閲覧しているものを含めておらず、デバッグが難しい場合は面倒です。あなたのレシピを参照しているコントローラの.joins(:ingredients)が必要です。レシピをロードする際に関連する成分がロードされます。あなたのコントローラとモデルコードを見ることなく、私ははるかに具体的なことはできません。

関連する問題