2010-04-23 62 views
17

如何正确调用link_to的创建动作?我正在使用REST(map.resources:recipes)。下面是创建行动:Ruby on Rails:我可以做一个“link_to”来调用创建操作吗?

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

例如,我想这样的事情可能工作:

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

我不知道这是一个推荐的(甚至是正确的)的方式来做到这一点。任何想法?

回答

28

如果您recipe_path替代recipes_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的实际上是将创建一个表单做POST的on_click处理程序。删除:confirm选项的链接也一样。

+0

欣赏你漂亮的解释探究性!非常感谢! :) – sjsc 2010-04-24 20:26:01

相关问题