我有两种模式:
发表:
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"
提前致谢!
答案 0 :(得分:2)
你的问题是ActiveSupport :: Inflector假设一个以复数形式结尾的'xes'的单词必须以单数形式以'x'结尾。 See here有关自定义复数的帮助。
更新:不知怎的,我错过了你问题的最后一部分。你说你试过了:
> ActiveSupport::Inflector.singularize('Exe')
但是你试过了吗?
> ActiveSupport::Inflector.singularize('Exes')
答案 1 :(得分:1)
在项目的inflections初始化程序中为此特定字符串定义变形器:
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'Exe', 'Exes'
end
请记住,在更改生效之前,您需要重新启动服务器。