2016-06-23 7 views
0

これはとても単純ですが動作しません。私は何が欠けていますか?#<CategoryItemValue :: ActiveRecord_Associations_CollectionProxy:0x007ff9706d24c0>のための未定義メソッド `value '

controlelr

@guide  = Guide.friendly.find(params[:guide_id]) 
@category = @guide.categories.friendly.find params[:id] 
@items  = @category.category_items 

ビュー

<% @items.each do |item| %> 
    <%= item.category_item_values.value %> 
<% end %> 

ので、私はよく分からないcategory_item_valuesテーブル内values列があり

undefined method 'value' for #<CategoryItemValue::ActiveRecord_Associations_CollectionProxy:0x007ff9706d24c0>

の無い方法エラーを与えます何が問題なの? 。

答えて

2

item.category_item_valuesCollectionProxyインスタンスである(1はちょっと配列のようなものと思うかもしれません。)

category_itemは、多くの値を[おそらく、あなたは、より正確に推測するのに十分に十分な情報を提供していませんでした]しています。上記の仮定が正しければ、ここに行く:

<% @items.each do |item| %> 
    <% item.category_item_values.each do |value| %> 
    <%= value %> # or maybe (depending on your model) <%= value.value %> 
    <% end %> 
<% end %> 
+0

おかげのような何かを行うことができます。ちょっとした無関係な質問がありました。 'jon = User.find(3)'のような変数のようなレコードを保存し、 'jon.name'のようなページで変数を数回呼び出すと、' User.find(3)を使うよりも速くなります。 name'を3回実行するか、変数を使用するたびにdbルックアップを実行しますか? – Rob

+1

さて、はい。このテクニックは "キャッシュ"と呼ばれます。データベースに対する3つのクエリの代わりに、コードは1つだけを実行します。 – mudasobwa

+0

助けてくれてありがとう – Rob

0

あなたは、これはあなたのcategory_item_valueが関連であることを示唆して<CategoryItemValue::ActiveRecord_Associations_CollectionProxy:0x007ff9706d24c0>ような結果を得るためにcategory_item_valuesのそれぞれをループする必要があります。

だから、答えを

<% item.category_item_values.each do |category_item_value| %> 
    <%= category_item_value.value %> 
<% end %> 
関連する問題