我正在为控制器使用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
请帮助。
答案 0 :(得分:2)
问题是Rails不知道Sms的复数是Smses。如果您转到Rails控制台,您应该看到:
> "Sms".pluralize
=> "Sms"
> "Smses".singularize
=> "Smse"
当面对复数时它无法识别,单一化会截断最后的“s”,这就是为什么你的应用正在寻找一个不存在的Smse模型。
通过将Rails配置为正确地复数/单一化模型,您将为自己省去很多麻烦。在文件config \ initializers \ inflections.rb中,您应该找到一些如何执行此操作的示例。你想要的是:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'sms', 'smses'
end
然后我认为你根本不需要在那里放置默认选项 - 它应该都是开箱即用的。