0

我有两个模型:

邮政:

class Post < ActiveRecord::Base 
    has_many :exes
end

可执行程序:

class Exe < ActiveRecord::Base
    belongs_to :post
end

我的看法http://localhost:3000/posts/index是:

NameError in Posts#index
uninitialized constant Post::Ex

它说只是Ex出于某种原因。

ruby 行的代码抱怨对<% post.exes.each do |exe| %>我来说是正确的。

所以我真的不知道为什么会这样。如果还检查了以下内容,因为我认为这可能是原因,但没有:

2.0.0-p247 :004 > ActiveSupport::Inflector.pluralize('Exe')
 => "Exes" 
2.0.0-p247 :005 > ActiveSupport::Inflector.singularize('Exe')
 => "Exe" 

提前致谢!

4

2 回答 2

2

您的问题是 ActiveSupport::Inflector 假设以复数形式以“xes”结尾的单词必须以单数形式以“x”结尾。有关自定义复数形式的帮助,请参见此处

更新:不知何故,我错过了你问题的最后一部分。你说你试过:

> ActiveSupport::Inflector.singularize('Exe')

但你尝试过:

> ActiveSupport::Inflector.singularize('Exes')
于 2013-09-12T00:09:49.167 回答
1

在项目的 inflections 初始化程序中定义此特定字符串的变形器:

# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'Exe', 'Exes'
end

请记住,您需要重新启动服务器才能使更改生效。

于 2013-09-12T00:14:33.517 回答