测验模型的Rails路由

时间:2014-11-17 02:55:11

标签: ruby-on-rails ruby ruby-on-rails-4

所以我环顾四周,并没有看到一种内置的方式来处理在英语中奇怪命名的单词。

我有一个测验模型,这意味着我有一个\ 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' 端

2 个答案:

答案 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 IssueRuby on Rails: How do you explicitly define plural names and singular names in Rails?作为示例。