2012-02-20 12 views
1

私のコントローラには継承されたリソースが使用されています。そして今、私はモデルがあります:Rails 3 inherited_resourcesは 'defaults'設定を無視します

class Sms < ActiveRecord::Base 
end 

をと私はデフォルトを作ることのためのコントローラ、欲しい:それはまだ「SMSE」モデルを取得しようとする理由、

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

を私は理解することはできません。

NameError in Admin::SmsesController#index 
uninitialized constant Smse 

Pls help。

答えて

2

Railsは、複数のSmがSmsesであることを知らないという問題があります。あなたがRailsのコンソールに行けば、あなたはそれを見る必要があります。

> "Sms".pluralize 
=> "Sms" 

> "Smses".singularize 
=> "Smse" 

それは認識していない複数に直面したとき、singularizeは自分のアプリが存在しないSMSEを探している理由である、最後の「s」を切り捨てますモデル。

モデルを正しく複数化/特異化するようにRailsを設定することで、多くの頭痛を軽減できます。 config \ initializers \ inflections.rbファイルに、これを行う方法の例がいくつかあります。何が欲しいのです:

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

その後、私はあなたがすべてでそこにデフォルトのオプションを配置する必要があるのはないと思う - それは、すべての箱から出して動作するはずです。

関連する問題