2013-02-27 2 views
1

Мне нужно определить перегиб для слова «шасси», где одно и то же слово определяет как единственное, так и множественное число, и я действительно борюсь с этим. я думал, что я был там с определением инициализации/inflections.rbRails 3.x Как правильно определить перегибы

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% вес (шасси), когда я первый создал подмостки, но тот Бесполезный» t работала хорошо, так как она не учитывала ведущие роли в путях и вызывала проблемы с отношениями и другими таблицами, такими как car_chassis и chassis_lookup.

Просмотрев различные решения, предоставленные в качестве ответов на подобные вопросы в переполнении стека, я в итоге придумал inflect.uncountable(/.*chassis.*/i), который, казалось, заботился о строительных лесов, но у меня проблема с маршрутами, где <%= link_to "Chassis", admin_chassis_url%> не дает мне маршрута для показа ошибка действия.

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

Который имеет смысл, как я хочу, действие индекса, поэтому я не передавая объект на пути, но Rails, очевидно, думая, что я прошу, что шоу Действие

другие примеры для регулярных выражений-х

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

всего лишь полный gobbledygook для меня, и изучение регулярных выражений требует целой жизни обучения, что у меня нет наклонности или здравомыслия, чтобы опустить голову, а документация по рельсам http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html - это откровенный путь этический.

У меня, очевидно, нет права перегиба. Может ли кто-нибудь дать мне полное решение относительно того, как я должен определить перегиб для слова «шасси» для меня и для других, потому что ни один из предыдущих ответов, которые я нашел, не дает полного и правильного решения.

ответ

1

Ваш перегиб кажутся правильными. Проверьте, что говорят «рейк-маршруты». В моем случае это было достаточно разумно, чтобы обнаружить, что множественная и единственная форма шасси была одинаковой, поэтому она создала admin_chassis_index, а не только admin_chassis для действия #index. Наверное, то же самое верно для вас. Это то, что я сделал:

В конфигурации/routes.rb

namespace :admin do 
    resources :chassis 
end 

Запуск рейк маршруты 'дает (обратите внимание на первый путь):

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 I» d необходимо позвонить:

<%= link_to "Chassis", admin_chassis_index_url%> 
+0

Awesome. Бог знает, почему я не проверял «рейк-маршруты». Я несколько дней разрывал мои волосы – jamesc