我为我的控制器使用继承的资源。现在我有了模型:
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请帮帮忙。
发布于 2012-07-18 19:11:25
问题是Rails不知道Sms的复数是Sms。如果你进入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那么我认为你根本不应该把默认选项放在里面--它应该都是开箱即用的。
https://stackoverflow.com/questions/9363807
复制相似问题