Rails 中 "Media/Medium" 的复数化和单数化(变形) 5

Pluralizations and Singularizations (Inflections) for "Media/Medium" in Rails 5

我正在使用 Rails 5,我刚刚使用脚手架工具创建了一个 Media 模型。

rails g scaffold media name:string

我得到了不同的名称和路线以及视图等...

它不是正确的复数形式,所以当我 rake routes 时,我得到了 medium 意想不到的路线,因此我在视图中遇到了不同的问题。

当我尝试使用 <%= form_for @media do .. 时,我收到关于 no method media_index_path 的抱怨。

如何修复它并使其正常运行?

整天都在搜索这个,当我 运行 第一个脚手架时有点好奇,它建议使用一种叫做 inflections 的东西,它基本上负责单词的复数和单数class 个名字:

我为修复它所做的是在下一种方式中使用 inflections

  1. 删除我刚刚创建的模型。

    rails d scaffold Media
    
  2. 编辑config/initializers/inflections.rb

    ActiveSupport::Inflector.inflections(:en) do |inflect|
        # Here you can put the singular and plural form you expect
        inflect.irregular 'media', 'medias'
    end
    
  3. 现在再次执行脚手架:

    rails g scaffold Media
    

现在您必须按照预期的方式拥有一切。因为你已经覆盖了 PluralizationsSingularizations (变形) in Ruby on Rails.

希望有用。

这个问题对我的英语真的是一个挑战:D

我用谷歌搜索了名词 media,它说一些纯粹主义者坚持认为从拉丁语借来的词 mediamedium 的复数形式,所以从这个角度来看,Rails 生成器做了正确的工作。

但在日常英语中,人们只是将media用作不可数名词或集体名词。如果您同意这一点,请调整 config/initializers/inflections.rb

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.uncountable %w( media )
end