3

「Route」リソースと「Route」コントローラーを備えたRailsアプリがあります(Railsルートと混同しないでください)。サイト管理者 (および管理者のみ) が「Route」コントローラーを介して「Route」リソースを管理できるように設定し、通常のユーザーは「Myroute」コントローラーを使用してルートを管理します。両方のコントローラーで RESTful ルーティングを利用したいのですが、"Myroute" コントローラーの "edit" ビューの form_for 関数に問題があります。

「Myroute」コントローラーの「編集」ビューのフォームタグは現在次のとおりです。

<% form_for @route, :url => { :id => @route.id }, :html => { :method => :put } do |f| %> 

これは次のように解決されます。

<form action="/myroutes/44/edit" class="edit_route" id="edit_route_44" method="post">

フォームのアクションは「作成」メソッドに送られるべきであり、「編集」メソッドは GET リクエストのみを処理するため、これは正しくありません。「Route」ビューから生成された HTML を見てわかることから、フォームは「/myroutes/44」に対して PUT 要求を行う必要があります。

モデルとは異なるコントローラーの「更新」メソッドに対して RESTful ルーティングを使用して PUT 要求を行うように form_for タグを作成するにはどうすればよいですか?

4

2 に答える 2

8

どうですか:

<% form_for @route, :url => {:action => 'update', :id => @route.id },
 :html => { :method => :put } do |f| %>
于 2009-09-22T21:12:09.630 に答える
2

これも機能することがわかります:

  <% form_for @route, :url => myroute_path(@route) do |f| %>
于 2009-09-22T21:16:43.573 に答える