2011-06-20 85 views
2

我在Rails應用程序中遇到了路由問題。Rails 3更新路由錯誤

我的路由文件有:

resources :translations 

哪些應該創建幾個途徑,包括更新。

做一個耙路線顯示更新路線有:

PUT /translations/:id(.:format)  {:action=>"update", :controller=>"translations"} 

然而,當我使用下面的代碼鏈接到更新:

<% form_tag({:controller => "translations", :action => "update"}, {:multipart => true}) do %> 
    <p><%= label_tag "upload", translate("UI_TEXT_FORM_SELECT_AUDIO_FILE") %>: 
    <%= file_field_tag "upload" %></p> 
    <%= submit_tag translate("UI_TEXT_FORM_SAVE") %> 
<% end %> 

我得到這樣的結果:

Routing Error 
No route matches "/translations/10" 

任何幫助,將不勝感激。

回答

2

它可能正在尋找與POST的路線。嘗試在選項哈希中添加:method => :put

<% form_tag({:controller => "translations", :action => "update"}, {:multipart => true, :method => :put}) do %> 
+0

做到了。感謝您的快速回復 – user807157

+0

當然,沒問題。儘管如此,Christian的建議還是不錯的:只要有可能,儘量使用form_for。它似乎適合你的情況。 –

0

試試包括:put方法。例如:

<%= form_tag({:controller => "translations", :action => "update"}, :html => {:method => :put, :multipart => true}) do %> 

其次,你應該有一個路由的別名。如果它是一個RESTFUL路線,看起來是這樣。你可以做一些類似於(下面)的事情,而不是指出它應該提交哪個控制器和動作。

<%= form_for(@transaction, :url => transaction_path, :html => {:method => :put, :multipart => true}) do %> 

對於你的reference