I figured out the problem with the original post, but I have a new 
problem.
When a user submits an invalid comment(if the title or content does not 
validate correctly), they get sent back to the article. There are two 
problems, though.

1. The form does not keep the previous field content, so the form 
resets.
2. All the comments disappear.

Articles controller:

  def show
    @article = Article.find(params[:id])
    @comments = @article.comments.paginate(:page => params[:page])
    @title = @article.title
  end


Comments controller:

  def create
    @article = Article.find(params[:article_id])
    @comment = @article.comments.build(params[:comment])
    @comment.user_id = current_user.id
    if @comment.save
      flash[:success] = "Comment saved."
      redirect_to @article
    else
      flash[:error] = "Error in creating comment."
      render 'articles/show'
    end
  end

Here's the comment form and the comment display code, if you need it:

Comment Form:
<%= form_for([...@article, @article.comments.build]) do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :content %><br />
    <%= f.text_area :content %>
  </div>
  <div class="actions">
    <%= f.submit "Post Comment" %>
  </div>
<% end %>

shared/_comments.html.erb:
<% unless @comments.nil? || @comments.empty? %>
    <%= render :partial => 'shared/comment', :collection => @comments %>
  <%= will_paginate @comments %>
<% end %>

shared/_comment.html.erb
<%= comment.title %><br />
<%= comment.content %><br />
<%= comment.user.name %><br /><br />

Thank you.
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to