部分渲染集合一次太多

时间:2017-04-09 15:28:27

标签: html ruby-on-rails

是的,我已经检查了here。它没有用。

Rails: 5.0.2 Ruby: 2.4.0

我有一个评论集合,每次调用它时,它会渲染一次太多而空白评论总是出现在其他人之下,当没有评论存在时,一个空评论仍会呈现。

以下是代码:

查看

<h2>Add a comment:</h2>
<%= render 'comments/form' %>

<h2>Comments</h2>
<%= render @video.comments || "There are no comments yet." %>

表单部分

<%= form_for([@video, @video.comments.new]) do |f| %>
    <p>
      <%= f.label :name %><br>
      <%= f.text_field :commenter %>
    </p>
    <p>
      <%= f.label :body %><br>
      <%= f.text_area :body %>
    </p>
    <p>
      <%= f.submit %>
    </p>
<% end %>

评论部分

<p>
  <strong>Name:</strong>
  <%= comment.commenter %>
</p>

<p>
  <strong>Comment:</strong>
  <%= comment.body %>
</p>

<p>
  <%= link_to 'Destroy Comment', [comment.video, comment],
              method: :delete,
              data: { confirm: 'Are you sure?' } %>
</p>

控制器

def create
    @video = Video.find(params[:video_id])
    @comment = @video.comments.create(comment_params)
    redirect_to video_path(@video)
end

def destroy
    @video = Video.find(params[:video_id])
    @comment = @video.comments.find(params[:id])
    @comment.destroy
    redirect_to video_path(@video)
end

private
def comment_params
    params.require(:comment).permit(:commenter, :body)
end

有谁知道为什么这会让部分时间延长?

1 个答案:

答案 0 :(得分:1)

您可以尝试在评论关联中调用.scope

<%= render @video.comments.scope || "There are no comments yet." %>