Ruby on Rails:我可以使用“link_to”来调用创建操作吗?

时间:2010-04-23 21:48:43

标签: ruby-on-rails ruby

如何从link_to正确调用create操作?我正在使用REST(map.resources:recipes)。这是创建动作:

def create
  recipe = Recipe.create(:name => "French fries")
  redirect_to recipe
end

例如,我认为这样的事情可能有用:

<%= link_to "Create a default recipe", recipe_path, :method => :post %>

我不确定这是否是推荐的(甚至是正确的)方式。有什么想法吗?

1 个答案:

答案 0 :(得分:29)

如果您将recipes_path替换为recipe_path

,这应该可行

如果查看rake routes的输出,您应该看到类似的内容:

recipes GET /recipes(.:format) {:controller=>"recipes", :action=>"index"}
        POST /recipes(.:format) {:controller=>"recipes", :action=>"create"}

这是一个线索,创建操作的URL帮助程序(“recipes_path”)由最后添加_path的控制器名称组成,使用:method => :post。使用:method => :get(默认值)的相同路径会映射到index操作。

请记住,如果禁用Javascript,这将无效,因为Rails实际上是添加了一个on_click处理程序,该处理程序创建了一个表单来执行POST。使用:confirm选项删除链接也是如此。