Well, I should have read more on the rails guides website. I found the solution so easy and simple.
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 'posts/show' } end end end And also changed this in my partial: <% if @comment.errors.any? %> <div id="formErrors"> <h4><%= @comment.errors.count %> Error while saving form:</h4> <ul> <% @comment.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %> Problem solved! Cheers Greg Am 17.05.2012 um 20:59 schrieb Greg: > 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. -- 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.