Вопрос

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.

Это было полезно?

Решение

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 %>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top