0

ユーザーがレシピを追加し、お気に入りのレシピを選択してメンバーエリアに表示できるアプリがあります。お気に入りを選択すると、user_id、recipe_idを取得して、favourite_idを指定できます。

私がやりたいのは、料理名、country_of_originなどの実際のレシピを(お気に入りとして)ビューに出力することです。これは実際のレシピで実行できますが、お気に入りではありません。これにはhas_many_throughを使用する必要がありますか?

私のモデルはこんな感じ

ユーザー

has_many :recipes
has_many :favourites

レシピ

belongs_to :user
has_many :ingredients 
has_many :preperations
has_many :favourites

お気に入り

belongs_to :user
belongs_to :recipe

attr_accessible :user_id, :recipe_id

私のコントローラー

  @favourites = current_user.favourites

私のlink_to投稿

 <%= link_to "Add to favorites",  {:controller => 'favourites', :action => 'create', :recipe_id => r.id}, {:method => :post } %>

私は現在のユーザーのレシピをリストすることができます、これはこれのための私のコントローラーです

@recipes = current_user.recipes if current_user.recipes

そしてそれらをそのようにビューに出力します

 <% @recipes.each do |r| %>
 <tr>
 <td><%= r.dish_name %></td>
 <td><%= r.country_of_origin %></td>
 <td><%= r.difficulty %></td>
 <td><%= r.preperation_time %></td>
 <td><%= ingredient_names(r.ingredients) %></td>
 <td><%= preperation_steps(r.preperations) %></td>
 <td><%= image_tag r.avatar.url(:thumb)%></td>
 <tr>

だから私がビューでこれを行う場合

 <li><%= @favourites %></li>

これを出力します

 <Favourite id: 16, user_id: 8, recipe_id: 21, created_at: "2012-11-07 20:24:39", updated_at: "2012-11-07 20:24:39">]

やってみたら

 <%= @favourites.dish_name %>

次に、エラーundefinedmethoddish_nameが表示されます

ビューに表示するレシピモデルのパラメータを取得するにはどうすればよいですか。私はそれがうまくいかないことをお詫びします、それは私が推測する本当に簡単なはずですか?

助けていただければ幸いです

4

3 に答える 3

1

お気に入りはただ関係を保持しています。あなたはによってレシピにアクセスすることができます

@favourites.recipe

これはレシピオブジェクトになり、dish_nameなどの属性が含まれます。

于 2012-11-07T21:07:02.893 に答える
1

お気に入りのモデルにはそのような属性がないため、undefineddish_nameを取得します。

@favourites = current_user.favouritesお気に入りオブジェクトの配列を返します。

あなたの見解では、あなたは次のようなことをするでしょう

 <% @favourites.each do |f| %>
   <%= f.recipe %>
 <% end %>

これにより、current_userのお気に入りのすべてのレシピが表示されます。特定のレシピを表示するかどうかを絞り込むことができます。

于 2012-11-07T21:10:32.517 に答える
1

@favouritesは配列ですよね?次に、@ favouritesをループして、次のように各要素を個別に操作する必要があります。

<% @favourites.each do |favorite| %>
  <%= favorite.recipe.dish_name %>    
<% end %>
于 2012-11-07T21:23:46.653 に答える