У меня странная ошибка, которую я не понимаю.У меня есть модель User
, определенная как:
class User < ActiveRecord::Base
validates_presence_of :name, :email
has_many :caves
end
И связанная модель Cave
, определенная как:
class Cave < ActiveRecord::Base
belongs_to :user
end
В методе показа моего пользователя я предлагаю создать новыйпещера:
<%= 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, страница отображается нормально. Но мой Relationshiop один-ко-многим, поэтому он должен читаться как «пещеры» в User, а не «пещера». Я считаю, что я прочитал все связанные вопросы здесь, в SO и в других местах,но мне кажется, ни одно из решений не применимо.