2016-09-20 9 views
3

Я работаю с Rails 5 a Я только что создал модель Media с использованием инструмента для строительных лесов.Плюрализация и сингулярности (перегибы) для «Медиа/Средний» в Rails 5

rails g scaffold media name:string 

И я получил разные названия и маршруты и просматривать и т.д. ...

enter image description here

Он был не прав pluralising, поэтому, когда я rake routes я получил medium неожиданные маршруты и из-за того, что я получил разные проблемы в представлениях.

enter image description here

Когда я пытаюсь использовать <%= form_for @media do .. меня жаловаться no method media_index_path.

Как я могу исправить это и хорошо работать?

Заранее благодарим за любую помощь.

ответ

4

Поиск весь день об этом и быть немного более интересно, когда я бегу самый первый эшафот он рекомендовал использовать что-то под названием inflections, которая в принципе отвечает за pluralising и singularising слов для имен классов:

enter image description here

Что я сделал, чтобы ее исправить, чтобы использовать 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 
    

Теперь вы должны иметь все в том, как вы ожидали. Поскольку вы перезаписал множественного числа и Singularizations(перегибы) в Ruby On Rails.

Надеюсь, это может быть полезно.

1

Этот вопрос действительно является вызов моего английским: D

Я гугл существительного СМИ, и он говорит, что некоторые пуристы настаивают на том, что слово СМИ, которое заимствовано из латыни, это множественное число форма medium, поэтому с этой точки зрения генератор Rails выполнил правильную работу.

Но на ежедневном английском языке люди просто используют media как неисчислимое существительное или коллективное существительное. Если вы согласны с этим, настройте конфигурацию config/initializers/inflections.rb

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