2012-02-20 78 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 

然后,我不认为你应该需要把默认的选项在那里的话 - 它应该所有工作开箱。