2012-02-20 107 views
1

我爲我的控制器使用了繼承資源。現在我有模式:Rails 3 inherited_resources忽略'默認'設置

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 

請幫助。

回答

2

問題是Rails不知道複數的Sms是Smses。如果你去Rails的安慰,你應該看到:

> "Sms".pluralize 
=> "Sms" 

> "Smses".singularize 
=> "Smse" 

當面對多個不認識,只是singularize截斷最後的「S」,這就是爲什麼你的應用程序正在尋找一個不存在的SMSE模型。

通過配置Rails以正確地複製/單獨化模型,您將節省很多麻煩。在文件config \ initializers \ inflections.rb中,您應該找到一些如何執行此操作的示例。你想要的是:

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

然後,我不認爲你應該需要把默認的選項在那裏的話 - 它應該所有工作開箱。