我只是在寻找以下一段代码的一些澄清,很好的一部分。为了给一些背景我有一个应用程序,你可以上传食谱,搜索食谱并将它们保存为收藏夹,这段代码是在一个控制器“食谱”,动作是“my_recipes”
<%= link_to "Add to favorites", {:controller => 'favourites', :action => 'create', :recipe_id => recipe.id}, {:method => :post } %>
我的理解是,这会创建一个link_to(锚标记,如果你愿意),它通过收藏夹控制器中的create方法发出请求。这部分我认为我认为(更正欢迎),我不确定的部分是
:recipe_id => recipe.id}
我知道这是传递recipe_id的例子,但我想知道为什么我们这样做?以及:
在第一个recipe_id之前的相关性。对某些人来说似乎是显而易见的,但在你学习之前你不会知道。
任何帮助表示赞赏
答案 0 :(得分:1)
此代码是否部分? recipe
被传递了吗?你应该这样重写:
link_to "Add to favorites", new_favourite_path(recipe), method: :post
在控制台中执行rake routes
并找出创建收藏夹的路径,然后将“new_favourite
”替换为上述内容。请注意,可能会使用更明确的内容标识路径,例如new_favourite_recipe
。
要回答您的问题,您必须通过recipe
或recipe.id
,否则控制器将无法知道要添加到收藏夹的配方。您无需指定用户,因为应使用current_user
之类的内容直接从控制器操作中访问该用户。