我需要为'chassis'这个词定义一个变形,其中同一个词定义了单数和复数,我真的很挣扎。 我以为我在那里有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(机箱),但由于没有考虑到领先路径中的部分并导致关系和其他表(例如car_chassis和chassis_lookup)出现问题。
看过各种解决方案,作为Stack Overflow中类似问题的答案,我最终想出了inflect.uncountable(/.*chassis.*/i)
这似乎照顾了脚手架,但我遇到<%= link_to "Chassis", admin_chassis_url%>
给出的路线问题我没有显示行动错误的路线。
ActionController::RoutingError - No route matches {:action=>"show", :controller=>"admin/chassis"}
这是有意义的,因为我想要索引操作所以我没有将对象传递给路径,但Rails显然认为我在请求show动作
正则表达式的其他示例
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
对我来说只是完全的gobbledygook并且学习正则表达式需要一辈子的学习,我没有倾向或理智来让我的头脑和轨道文件http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html在变形上是非常可怜的。
我显然没有得到正确的拐点。任何人都可以给我一个完整的解决方案,确切地说我应该如何为我和其他人定义“底盘”一词的变形,因为我发现之前的答案都没有提供完整和正确的解决方案
答案 0 :(得分:1)
你的变形似乎是正确的。 检查'rake routes'告诉你什么。在我的情况下,智能足以检测到复数和单一形式的机箱是相同的,因此它为#index操作生成了admin_chassis_index而不仅仅是admin_chassis。也许,对你来说也是如此。这就是我所做的:
在config / routes.rb
中namespace :admin do
resources :chassis
end
运行'rake routes'给出(注意第一条路径):
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
所以,对于#index,我需要打电话:
<%= link_to "Chassis", admin_chassis_index_url%>