轨道 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

请帮忙。

问题是Rails不知道Sms的复数是Smses。如果你去Rails控制台,你应该会看到:

> "Sms".pluralize
 => "Sms"
> "Smses".singularize
 => "Smse"

当遇到它无法识别的复数时,单数只会截断最后的"s",这就是为什么你的应用程序正在寻找一个不存在的Smse模型。

通过将Rails配置为正确地对模型进行复数/单数,您将省去很多麻烦。在config\initializers\infections.rb文件中,您应该可以找到一些如何做到这一点的示例。你想要的是:

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

那么我认为你根本不应该把默认选项放在那里——这一切都应该开箱即用。

相关内容

  • 没有找到相关文章

最新更新