I have a Page with many Comments. Many users can access this page and submit comments. I view the comments on another Page that is private.
class Page < ActiveRecord::Base
has_many :comments, :dependent => :destroy
accepts_nested_attributes_for :comments, :allow_destroy => true
end
class Comment < ActiveRecord::Base
belongs_to :page
belongs_to :user
end
<%= form_for @page, :remote => true do |f| %>
<% f.fields_for :comments do |builder| %>
<%= builder.text_area :content, :rows => 1 %>
<%= builder.submit "Submit" %>
<% end %>
<% end %>
def show
@page = Page.find(params[:id])
end
def update
@page = Page.find(params[:id])
@page.comments.build
@page.update_attributes(params[:page])
end
The issue here is that I do not want to have the user see multiple fields for comments. Yet, if I do <% f.fields_for :comment do |builder| %>
then it throws an error because it doesn't know what one comment is, and only wants to deal with multiple.
Essentially, the user should be able to submit a single comment on a page, which has many comments, and have that automatically associated with the page. As a secondary thing, I need to have the user's id (accessible through current_user.id via Devise) associated with the comment.
<% f.fields_for :comments, f.object.comments.build do |fc| %>
<!-- rest of form -->
<% end %>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With