我有这个奇怪的错误,我不明白。我有一个模型User
定义为:
class User < ActiveRecord::Base
validates_presence_of :name, :email
has_many :caves
end
以及一个相关的模型Cave
定义为:
class Cave < ActiveRecord::Base
belongs_to :user
end
在我的用户的 show 方法中,我提议创建一个新的洞穴:
<%= form_for([@user, @user.caves.build]) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
但是当我显示页面时,我收到以下错误:
NameError in Users#show
Showing E:/Vinisync/app/views/users/show.html.erb where line #19 raised:
uninitialized constant User::Cafe
Extracted source (around line #19):
16: </p>
17:
18: <h2>Add a Cave</h2>
19: <%= form_for([@user, @user.caves.build]) do |f| %>
20: <div class="field">
21: <%= f.label :name %><br />
22: <%= f.text_field :name %>
我不知道这个“咖啡馆”是从哪里来的,我的代码中没有这个词!
我注意到的是,如果我重命名 User.rb 中的关联has_many :cave
而不是has_many :caves
当前(并以用户的 show.html.erb 中的形式更改它,页面显示正常。但我的关系是一对多的,所以它应该在用户中读作“洞穴”,而不是“洞穴”。我相信我已经阅读了关于 SO 和其他地方的所有相关问题,但我似乎没有一个解决方案适用。