Rails 3路由具有不正确的单数形式

时间:2013-04-26 20:38:13

标签: ruby-on-rails ruby-on-rails-3 routes activeresource

我有以下路线:

resources :businesses, only: [:show, :index, :new, :create] do
  resources :pledge_drives
end

这会创建以下内容:

% rake routes | grep pledge
     business_pledge_drives GET    /businesses/:business_id/pledge_drives(.:format)                                         pledge_drives#index
                            POST   /businesses/:business_id/pledge_drives(.:format)                                         pledge_drives#create
  new_business_pledge_drife GET    /businesses/:business_id/pledge_drives/new(.:format)                                     pledge_drives#new
 edit_business_pledge_drife GET    /businesses/:business_id/pledge_drives/:id/edit(.:format)                                pledge_drives#edit
      business_pledge_drife GET    /businesses/:business_id/pledge_drives/:id(.:format)                                     pledge_drives#show
                            PUT    /businesses/:business_id/pledge_drives/:id(.:format)                                     pledge_drives#update
                            DELETE /businesses/:business_id/pledge_drives/:id(.:format)                                     pledge_drives#destroy

希望调用URL帮助程序方法business_pledge_drife_path。如何在drives的单一化中纠正Rails?实际的网址很好。

编辑: this answer做对了。我在config / initializers / inflections.rb中添加了以下内容:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'drive', 'drives'
  inflect.singular 'drives', 'drive'
end

现在我的路线是:

     business_pledge_drives GET    /businesses/:business_id/pledge_drives(.:format)                                         pledge_drives#index
                            POST   /businesses/:business_id/pledge_drives(.:format)                                         pledge_drives#create
  new_business_pledge_drive GET    /businesses/:business_id/pledge_drives/new(.:format)                                     pledge_drives#new
 edit_business_pledge_drive GET    /businesses/:business_id/pledge_drives/:id/edit(.:format)                                pledge_drives#edit
      business_pledge_drive GET    /businesses/:business_id/pledge_drives/:id(.:format)                                     pledge_drives#show
                            PUT    /businesses/:business_id/pledge_drives/:id(.:format)                                     pledge_drives#update
                            DELETE /businesses/:business_id/pledge_drives/:id(.:format)                                     pledge_drives#destroy

1 个答案:

答案 0 :(得分:1)

大多数情况下,rails知道单词的正确复数,例如:model name。 但是,在其他情况下,您可以使用“变形”在轨道中定义正确的转换。