「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 タグを作成するにはどうすればよいですか?