0

浏览stackoverflow一段时间后无法找到以下问题的解决方案:

我有一个脚手架模型fleets,我想将路由匹配\fleets\postponed?id=31\到控制器中的特定操作 => def postponedwithPOST方法。

当我尝试遵循一些教程时,这里失败了:

Couldn't find Fleet with id=postpone

这是我的路线:

  匹配 '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将被分派到 Fleets 控制器的延迟操作。参数将是{ :controller => “fleets”, :action => “postponed”, :id => “1”, :user_id => “2” }.

于 2013-01-23T04:04:48.643 回答