0

我只是想对以下代码进行一些澄清,其中一部分。为了提供一些背景信息,我有一个应用程序,您可以在其中上传食谱,搜索食谱并将它们保存为收藏夹,这段代码位于控制器“食谱”中”,动作是“我的食谱”

<%= 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 之前的相关性。可能对某些人来说似乎很明显,但在你学习之前你不知道。

任何帮助表示赞赏

4

1 回答 1

1

这段代码是部分的吗?是recipe被传递吗?你应该这样重写:

link_to "Add to favorites",  new_favourite_path(recipe), method: :post

在您rake routes的控制台中执行并找出创建收藏夹的路径是什么,然后用new_favourite上面的替换“”。请注意,路线可能会用更明确的东西来标识,例如new_favourite_recipe.

要回答您的问题,您必须通过reciperecipe.id否则控制器将不知道将哪个食谱添加到收藏夹中。您不需要指定用户,因为应该使用类似current_user.

于 2012-11-07T18:05:49.787 回答