我有一個應用程序,允許用戶添加食譜,然後選擇他們喜歡的食譜來查看他們的會員區,我可以選擇一個最喜歡的,我得到user_id,recipe_id並給它一個favourite_id。Rails中的關聯3
我想要做的是輸出實際的食譜到我的看法(作爲最喜歡的),如菜的名字,country_of_origin等我可以做一個實際的食譜,但不喜歡favourite.Do我需要使用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 %>
然後我得到的錯誤未定義的方法dish_name
我如何獲得配方模型的PARAMS到在視圖中顯示。我做道歉只是不能解決問題,這應該很容易,我猜?
任何幫助表示讚賞
我明白你在說什麼,有道理,因爲我必須從配方模型中獲得參數,謝謝你清理那個,但是現在我得到了未定義的方法配方......你建議的是視圖是的? – Richlewis
這是正確的。我明白了,它給你一個未定義的方法配方的原因是因爲你從current_user.favourites得到的是一個Favorite的數組。你需要做的是遍歷數組,然後你就可以做你想要的。讓我更新我的回答 –
非常感謝,現在的作品:) – Richlewis