Rails 3 Ensulited_Resourcesは「デフォルト」設定を無視します
-
28-10-2019 - |
質問
コントローラーに継承されたリソースを使用しています。そして今、私はモデルを持っています:
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
そうすれば、デフォルトオプションをまったく入れる必要はないと思います。すべてが箱から出して作業する必要があります。
所属していません StackOverflow