5

Rails 5を使用していますが、 Mediascaffold ツールを使用してモデルを作成しました。

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の複数形と単数形(語形変化)を上書きしたためです。

お役に立てば幸いです。

于 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 に答える