所以我环顾四周,并没有看到一种内置的方式来处理在英语中奇怪命名的单词。
我有一个测验模型,这意味着我有一个\ quizes的索引操作。
resources 'quizes', only: ['index', 'new', 'show']
我希望能够做到像
这样的事情quizes_path #Note this one works
quiz_path(:id) #this does not
我必须做quize_path(:id)
这是rake路线,注意路径名称是quize而不是quiz。
quizes GET /quizes(.:format) quizes#index
new_quize GET /quizes/new(.:format) quizes#new
quize GET /quizes/:id(.:format) quizes#show
这更适合学习。我知道我可以手动指定单一资源并完成。
最终的问题是,有没有办法在资源中指定这一点,以便它知道单个资源应该删除'es'而不仅仅是's'
修改
这是基于资源的正确的变形器。谢谢!
ActiveSupport :: Inflector.inflections(:en)do | inflect | inflect.singular / ^(quiz)es / i,'\ 1' 端
答案 0 :(得分:2)
在路线定义中使用quizzes
代替quizes
:
resources :quizzes
然后奇异的路线是:
new_quiz GET /quizzes/new(.:format) quizzes#new
edit_quiz GET /quizzes/:id/edit(.:format) quizzes#edit
quiz GET /quizzes/:id(.:format) quizzes#show
答案 1 :(得分:1)
正如@Anand的答案所说,你需要拼写"测验"在这种情况下正确。要回答您的一般问题,请在文件config/initializers/inflections.rb
中查找变形。之前已经询问过:Ruby on Rails Inflection Issue和Ruby on Rails: How do you explicitly define plural names and singular names in Rails?作为示例。