0

しばらくブラウジングした直後、stackoverflowは次の問題の解決策を見つけることができませんでした:

スキャフォールドモデルがあり、ルートをコントローラーの特定のアクションにfleets一致させたい=>メソッドを使用します。\fleets\postponed?id=31\def postponedPOST

私はいくつかのチュートリアルに従おうとしましたが、ここでは失敗しました:

Couldn't find Fleet with id=postpone

これが私のルートです:

  match'fleets / postponed.id?:id'、:controller => "fleets"、:action => "postponed"、:via =>:post
  リソース:艦隊

POSTメソッドのフォームは次のとおりです。

 <%= form_for @fleet, :html => { :class => 'form-horizontal' }, :url => { :id => @fleet.id }  do |f| %>
   blah-blah-blah
 <%= f.submit 'Postpone' %>
 <% end %>

アクションは次のとおりです。

defは延期されました
  @fleet = Fleet.find(params [:id])
  @ fleet.update_attributes(params [:fleet])
終わり

どんな助けでもいただければ幸いです

4

2 に答える 2

2

私はあなたがあなたのルートでこれが欲しいだけだと思います

match 'fleets/postponed', :id => /d+/, :via => :post, :controller => 'fleets', :action => 'postponed'
于 2013-01-23T07:15:02.830 に答える
1

このルートを実現する<host>/fleets/postponed?id=31には、次のルートが必要です

match 'fleets/postponed/:id', :via => :post

クエリ文字列のルーティングガイドセクションを参照してください

match ':controller/:action/:id'

の着信パスは/fleets/postponed/1?user_id=2、フリートコントローラーの延期されたアクションにディスパッチされます。paramsはになります{ :controller => “fleets”, :action => “postponed”, :id => “1”, :user_id => “2” }

于 2013-01-23T04:04:48.643 に答える