2010-04-23 56 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

相關問題