Итак, в основном у меня есть две модели: Entry и Comment. У меня есть настройка ассоциации, так что запись имеет много комментариев:
class Entry < ActiveRecord::Base
has_many :comments
end
И комментарий принадлежит записи:
class Comment < ActiveRecord::Base
belongs_to :entry
end
В моей схеме базы данных я настроил таблицу комментариев со столбцом с именем entry_id. Насколько мне известно, это все, что мне нужно было сделать, чтобы настроить ассоциацию. Однако, когда я сохраняю комментарий, entry_id не сохраняется в базе данных.
Я могу подтвердить, что entry_id передается в форме. Вот дамп переменной params, отправляемой контроллеру.
{"comment"=>{"comment"=>"ghgghgh"},
"commit"=>"Create Comment",
"format"=>"",
"entry_id"=>"1",
"authenticity_token"=>"G4uH8smdA2eeKeTXbD9NbenKH4AbWLyJuPWQzRcn6CI=",
"utf8"=>"✓"}
Есть идеи?
РЕДАКТИРОВАТЬ: Это мое мнение со встроенной формой комментариев:
<% @entry.each do |e| %>
<div class="entry">
<p><%= e.entry %></p>
<small>Posted by <%= e.author %> at <%= e.created_at.strftime("%I:%M%p %m/%d/%Y") %></small>
<% if e.comments.nil? %>
<p>No Comments</p>
<% else %>
<% e.comments.each do |c| %>
<blockquote><%= c.comment %></blockquote>
<% end %>
<% end %>
<%= form_for @comment, :url => entry_comments_path(e, @comment) do |f| %>
<%= f.label :comment %>
<%= f.text_area :comment %>
<%= f.submit %>
<% end %>
</div>
<hr />
<% end %>
<%= button_to "Write A Message", new_entry_path, :method => :get %>
У меня есть комментарии в виде вложенного маршрута:
resources :entries do
resources :comments
end