我正在尝试为这些项目添加添加到收藏夹选项。这允许用户将特定项目添加到收藏列表中。但是我得到了这个错误:
param is missing or the value is empty: favorite
收藏控制器中的create方法:
def create
@favorite = Favorite.new(params.require(:favorite).permit(:item_id, :user_id ))
if @favorite.save
redirect_to @favorite
flash[:notice] = 'Favorite was successfully created.'
else
render 'new'
end
end
项目的视图显示:
<%= link_to 'Add to favorites', {:controller => "favorites",
:action => "create",
:item_id => @item.id,
:user_id => current_user.id},
:method => "post" %>
请求(参数):
{ "_method"=>"post", "authenticity_token"=>"Wz1eGNw/3GH9t+aOquT/hu1F27zBSqAx6K6igxoc2VI=", "item_id"=>"27", "user_id"=>"10"}
URL:
/favorites?item_id=27&user_id=10
答案 0 :(得分:0)
如果你查看ActionController#permit的文档,看起来这些参数需要嵌套在最喜欢的地方:
(favorite: { item_id: 1, user_id: 1 })
当使用rails形式的帮助器时,例如form_for,这种嵌套会自动完成,但因为你手动传递params in link_to
item_id而user_id将直接嵌入params。
This SO answer解释了如何将link_to
参数合并到params哈希中。或者,您可以在params.require
调用之前将它们合并到控制器中。