我在此之前发了几篇关于如何向用户添加喜欢的食谱的帖子..我有一个应用程序,您可以在登录后上传食谱,用户可以在整个餐桌上搜索所有食谱并查看自己的食谱在会员区..
现在我希望用户能够保存自己喜欢的食谱,到目前为止我可以保存喜欢的食谱,我得到的输出是
[#<Favourite id: 1, user_id: 8, recipe_id: nil, created_at: "2012-11-06 19:25:34", updated_at: "2012-11-06 19:25:34">,
所以我得到了正确的user_id,但没有实际配方的参数,即菜名,原产地。
我的模特就是这样
用户
class User < ActiveRecord::Base
has_many :recipes
has_many :favourites
配方
has_many :ingredients
has_many :preperations
has_many :favourites
收藏
belongs_to :user
belongs_to :recipe
我最喜欢的控制器看起来像这样
def create
@favourite = current_user.favourites.new(params[:recipe])
if @favourite.save
redirect_to my_recipes_path, :notice => "Recipe added to Favourites"
end
end
添加到收藏夹链接
<%= link_to "Add to favorites", {:controller => 'favourites', :action => 'create'}, {:method => :post } %>
我希望我没有错过任何任何帮助,
答案 0 :(得分:3)
您需要在链接中添加额外信息并修改创建操作
# View
<%= link_to "Add to favorites", favorite_path(:recipe_id => @recipe.id), {:method => :post } %>
# Controller
def create
@favourite = current_user.favourites.new(recipe_id: params[:recipe_id)
if @favourite.save
redirect_to my_recipes_path, :notice => "Recipe added to Favourites"
end
end
问题是你在param params[:recipe]
注意:请记住attr_accessible :user_id, :recipe_id
模型中的Favorite
。
答案 1 :(得分:1)
您没有在链接中发送任何参数。
<%= link_to "Add to favorites", {:controller => 'favourites', :action => 'create'}, {:method => :post } %>
这不足以将食谱添加到收藏夹中。您需要做的是通过食谱的ID以及此链接:
<%= link_to "Add to favorites", {:controller => 'favourites', :action => 'create', :recipe_id => recipe.id}, {:method => :post } %>
或者你可以通过使用路由助手来缩短它:
<%= link_to "Add to favorites", add_to_favorites_path(:recipe_id => recipe), {:method => :post } %>
在config/routes.rb
中定义路由助手,如下所示:
post '/favorites' => "favorites#create", :as => "add_to_favorites"
然后只需在控制器内找到params[:recipe_id]
的食谱,然后做你需要做的事情。
答案 2 :(得分:1)
如上所述
<%= link_to "Add to favorites", favorite_path(:recipe_id => @recipe.id), {:method => :post } %>
但这一切都取决于控制器中定义的@recipe - 例如,如果你有
@recipes = Recipie.all
在视图中你有
@recipes.all do |recipe|
然后在您的链接中(在块内)您需要:
<%= link_to "Add to favorites", favorite_path(:recipe_id => recipe.id), {:method => :post } %>
这有帮助吗?