Search code examples
ruby-on-railsnested-resources

Nested Resource Sad Path Renders blank comment


enter image description here

I have a comment resource nested in a post resource.

  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.build(params[:comment])
    @comment.ip = request.remote_ip
    if @comment.save
      redirect_to post_path(@post, notice: "Comment was successfully created")
    else
      flash[:alert] = "Comment could not be created"
      render 'posts/show'
    end
  end

This all works well enough, but I have a nag item in that when the posts/show page with the comment form re-renders, it shows the comment that didn't pass validation inline. I'd like to know the correct way to do this, short of performing some logic in the view layer to not display a comment that isn't saved.


Solution

  • I ended up solving it in the view, because I couldn't find any other solution

    <% @post.comments.each do |c| %>
      <% unless c.new_record? %>
        <strong><%= "#{c.name} wrote: " %></strong><br />
        <blockquote><%= c.body %></blockquote>
      <% end %>
    <% end %>