Hi all,
I get stucked with the following scenario. I have a simple application where I 
have a post which can have a lot of comments. In the show action of the post I 
loaded the partial form to create the comment. This is also working. My problem 
is when the validation for the comment fails I don't know how to set the render 
method in the create action of the comments controller to get back to the 
current post show view and also to display the form errors. I can do a redirect 
back to the current post but then I will miss all the form data and see also no 
errors. Hope someone can give me a hint how to solve this.

Here are my models:

class Post < ActiveRecord::Base
  extend FriendlyId
  friendly_id :title, use: :slugged
  # attr_accessible :title, :body
  attr_accessible :title, :teaser, :content, :category_id, :picture

  #paperclip settings
  has_attached_file :picture, :styles => { :medium => "300x225>", :small => 
"180x115>", :thumb => "150x150>" }

  #association
  belongs_to :category
  has_many :comments
end

class Comment < ActiveRecord::Base
  attr_accessible :content, :email, :name, :website

  validates :content, :email, :name, :website, :presence => {:message => "Darf 
nicht leer sein!"}

  belongs_to :post
end


My routes are set like this:

resources :posts do
        resources :comments
end

Show view post:
...
 <div class="comment">
        <h2>Comments</h2>
        <br/>
            show here partial with comments

        <h2 class="new">New Comment</h2>
      <%=  render "comments/form" %>
    </div>
…

Comments Form Partial:

<%= form_for([@post,@post.comments.build]) do |f| %>
    <% if @post.comments.build.errors.any? %>
        <div id="formErrors">
          <h4><%= @post.comments.build.errors.count %> Error while saving 
form:</h4>
          <ul>
            <% @post.comments.build.errors.full_messages.each do |msg| %>
                <li><%= msg %></li>
            <% end %>
          </ul>
        </div>
    <% end %>
    <p>
      <%= f.label :name %><br/>
      <%= f.text_field :name %><br/>
    </p>
    <p>
      <%= f.label :email %><br/>
      <%= f.text_field :email %><br/>
    </p>

    <p>
      <%= f.label :website%><br/>
      <%= f.text_field :website %><br/>
    </p>

    <p>
      <%= f.label :content %><br/>
      <%= f.text_area :content %><br/>
    </p>

    <%= f.submit "Save" %>

<% end %>

create action in comments controller

  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.build(params[:comment])
    respond_to do |format|
      if @comment.save
        format.html { redirect_to(post_path(@post), :notice => "Comment 
successfully created") }
      else
        flash[:alert] = "Something went wrong!"
        format.html { render ???? }
      end

    end
  end



Thanks for any help with this.

Cheers Greg

-- 
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to