2011-06-20 11 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

確かに問題ありません。可能であれば、 '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の場合

関連する問題