2

同じ単語が単数形と複数形の両方を定義する「シャーシ」という単語の語形変化を定義する必要があり、これに本当に苦労しています。私はinitialize/inflections.rb定義でそこにいると思った

 ActiveSupport::Inflector.inflections do |inflect|
#   inflect.plural /^(ox)$/i, '\1en'
#   inflect.singular /^(ox)en/i, '\1'
#   inflect.irregular 'person', 'people'
#   inflect.uncountable %w( fish sheep )
    inflect.uncountable(/.*chassis.*/i)
 end

inflect.uncountable %w( fish sheep )最初に足場をセットアップしたときに inflect.uncountable %w( chassis ) を使用しようとした例に注意してください。car_chassis や chassis_lookup などの他のテーブル。

Stack Overflow で同様の質問への回答として提供されているさまざまなソリューションを調べた結果inflect.uncountable(/.*chassis.*/i)、足場を処理しているように見えましたが<%= link_to "Chassis", admin_chassis_url%>、show アクション エラーのルートが表示されないルートに問題がありました。

ActionController::RoutingError - No route matches {:action=>"show", :controller=>"admin/chassis"}

index アクションが必要なため、パスにオブジェクトを渡していないので、これは理にかなっていますが、Rails は明らかに show アクションを要求していると考えています。

正規表現の他の例

#   inflect.plural /^(ox)$/i, '\1en'
#   inflect.singular /^(ox)en/i, '\1'

私にとっては完全なゴブルディグックであり、正規表現を学ぶには、頭を丸くする傾向も正気もないという一生の学習が必要であり、レールのドキュメントhttp://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections語形変化に関する.htmlは、率直に言って哀れです。

私は明らかに屈折を正しく理解していません。私が見つけた以前の回答のいずれも完全かつ適切な解決策を提供していないため、私と他の人にとって「シャーシ」という単語の語形変化を正確にどのように定義する必要があるかについて、誰かが完全な解決策を教えてくれますか?

4

1 に答える 1

1

Your inflection seem to be correct. Check what 'rake routes' tell you. In my case it was smart enough to detect that plural and single form of chassis was the same, so it generated admin_chassis_index instead of just admin_chassis for the #index action. Probably, the same is true for you. This is what I did:

In config/routes.rb

namespace :admin do
  resources :chassis
end

Running 'rake routes' gives (note the first path):

admin_chassis_index GET    /admin/chassis(.:format)          admin/chassis#index
                    POST   /admin/chassis(.:format)          admin/chassis#create
  new_admin_chassis GET    /admin/chassis/new(.:format)      admin/chassis#new
 edit_admin_chassis GET    /admin/chassis/:id/edit(.:format) admin/chassis#edit
      admin_chassis GET    /admin/chassis/:id(.:format)      admin/chassis#show
                    PUT    /admin/chassis/:id(.:format)      admin/chassis#update
                    DELETE /admin/chassis/:id(.:format)      admin/chassis#destroy

So, for #index I'd need to call:

<%= link_to "Chassis", admin_chassis_index_url%>
于 2013-02-27T23:07:14.200 に答える