首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3 inherited_resources忽略“defaults”设置

Rails 3 inherited_resources忽略“defaults”设置
EN

Stack Overflow用户
提问于 2012-02-20 23:38:38
回答 1查看 450关注 0票数 1

我为我的控制器使用继承的资源。现在我有了模型:

代码语言:javascript
复制
class Sms < ActiveRecord::Base
end

我想要它的控制器,在那里我设为默认值:

代码语言:javascript
复制
class Admin::SmsesController < Admin::InheritedResources
  defaults :resource_class => Sms,
           :collection_name => 'smses',
           :instance_name => 'sms'
end

但我不明白,为什么它还试图得到"Smse“模式:

代码语言:javascript
复制
NameError in Admin::SmsesController#index
uninitialized constant Smse

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-18 19:11:25

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

代码语言:javascript
复制
> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

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

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

代码语言:javascript
复制
ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'sms', 'smses'
end

那么我认为你根本不应该把默认选项放在里面--它应该都是开箱即用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9363807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档