通过link_to rails 3传递params

时间:2012-11-07 09:41:08

标签: ruby-on-rails-3

我只是在寻找以下一段代码的一些澄清,很好的一部分。为了给一些背景我有一个应用程序,你可以上传食谱,搜索食谱并将它们保存为收藏夹,这段代码是在一个控制器“食谱”,动作是“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之前的相关性。对某些人来说似乎是显而易见的,但在你学习之前你不会知道。

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

此代码是否部分? recipe被传递了吗?你应该这样重写:

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

在控制台中执行rake routes并找出创建收藏夹的路径,然后将“new_favourite”替换为上述内容。请注意,可能会使用更明确的内容标识路径,例如new_favourite_recipe

要回答您的问题,您必须通过reciperecipe.id,否则控制器将无法知道要添加到收藏夹的配方。您无需指定用户,因为应使用current_user之类的内容直接从控制器操作中访问该用户。