質問

コントローラーに継承されたリソースを使用しています。そして今、私はモデルを持っています:

class Sms < ActiveRecord::Base
end

そして、私はそれのためにコントローラーを望んでいます、私はデフォルトを作成します:

class Admin::SmsesController < Admin::InheritedResources
  defaults :resource_class => Sms,
           :collection_name => 'smses',
           :instance_name => 'sms'
end

しかし、私は理解することができません、なぜそれがまだ「SMSE」モデルを取得しようとしているのか:

NameError in Admin::SmsesController#index
uninitialized constant Smse

plsが役立ちます。

役に立ちましたか?

解決

問題は、RailsがSMSの複数形がSMSであることを知らないことです。 Railsコンソールに行くと、次のように表示されます。

> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

複数形に直面している場合、それが認識していない場合、Singularizeは最終的な「S」を切り捨てるだけで、アプリは存在しないSMSEモデルを探しています。

モデルを正しく複数化/特異化するようにRailsを構成することにより、多くの頭痛を節約できます。ファイルconfig initializers fefcrefcss.rbで、これを行う方法の例をいくつか見つける必要があります。あなたが望むのは:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'sms', 'smses'
end

そうすれば、デフォルトオプションをまったく入れる必要はないと思います。すべてが箱から出して作業する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top