5

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

rails g scaffold media name:string

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

在此处输入图像描述

多元化是不对的,所以当我rake routes得到medium意想不到的路线时,我在视图中遇到了不同的问题。

在此处输入图像描述

当我尝试使用时,<%= form_for @media do ..我抱怨no method media_index_path.

我怎样才能修复它并正常工作?

提前感谢您的帮助。

4

2 回答 2

7

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

在此处输入图像描述

我为修复它所做的就是以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
    

现在你必须以你期望的方式拥有一切。因为您已经覆盖了Ruby on Rails 中的PluralizationsSingularizations (Inflections)

我希望它有用。

于 2016-09-20T04:37:36.050 回答
5

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

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

但在日常英语中,人们只是简单地将媒体用作不可数名词或集合名词。如果您同意,则调整config/initializers/inflections.rb

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.uncountable %w( media )
end
于 2016-09-20T04:55:40.563 回答