Re: Routing acts_as_commentable form_for submission

Adam Cohen
2008-03-18T04:18:26Z

you could create a CommentsController and use hidden form fields in a shared
view to tell the comments controller which type of object the comment should
be associated with.
For example:

app/views/shared/_comments.rhtml

<% item = comments %>

<% for comment in item.comments %>
Comment posted by <%= comment.user.full_name %>
<%= comment.body %>
<% end %>

Comment on this <%= item.class %>
<% form_tag(comments_path) do -%>
  <%= hidden_field_tag ''comment[commentable_id]'', item.id
%>
  <%= hidden_field_tag ''comment[commentable_type]'',
item.class %>
  <%= text_area_tag ''comment[body]'', nil, :style =>
''width:100%;
height:100px;'' %>
  <%= image_submit_tag (''post_comment_button.png'') %>
<% end %>

The above would work with the polymorphic Comment class used by
acts_as_commentable

Adam




On Mon, Mar 17, 2008 at 3:48 PM, Neil Cauldwell <
rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:

>
> I have a Group model and a NewsItem model, and NewsItems are nested in
> Groups.
>
> I''m trying to add acts_as_commentable powered comments to the
NewsItem
> model, but I haven''t worked out how to handle the submission of
new
> comments when ''comments'' aren''t a resource in
the URL. I don''t have a
> CommentsController or a comments route (I was under the impression that
> they aren''t necessary). I do have a
''comments/_form.html.erb'' which I
> was going to call from the ''news_items/show.html.erb''.
>
> Should I put a ''@new_comment = Comment.new'' instance
variable in the
> news_item_controller.rb ''show'' action (or any other
action that will
> receive new comments), and use a form_for helper on the @new_comment in
> the view? Because that the method I was expecting to take, but I just
> realised I don''t know how to handle ''form_for''
url for the @new_comment
> when the comment is being created within the group_news_item_path, i.e;
>
>
> <% form_for(@new_comment) do |f| %> # where do I point this?
> <%= render :partial => ''comments/form'', :locals
=> { :f => f }%>
> <% end %>
>
> And I also realised that this approach could create a fair bit of
> duplication, if I''m going to maxmise this polymorphic plugin, and
re-use
> the comment/_form.html.erb across the ''show'' actions for
many other
> models - all my controller actions will need the Comment.new adding to
> them. Is there a better way or something I''m missing?
> --
> Posted via http://www.ruby-forum.com/.
>
> >