1
はい、すでにhereをチェックしました。それはうまくいかなかった。一部のレンダリングのコレクションが1回多すぎます
のRails: 5.0.2 ルビー: 2.4.0
私はコメントのコレクションを持っており、それが呼び出されるたびに、それはあまりにも多くの1時間をレンダリングして、空のコメントは常に他の人の下に表示されますコメントが存在しない場合、空の1つがまだレンダリングされます。ここで
はコードです:表示部分
<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
これは部分的に余分な時間をレンダリングする理由誰でも知っていますか?
これは実際には空のコメントを削除する作業は、しかし、今それはまだ出力は「コメントはまだありませんでした。 "私はこの機能を提供するjavascript関数を作成することができますが、私はする必要はありません。 –
まあ、 'if-else'条件を使ってコメントを表示することで、javascriptなしでこれを実現することができます:<%if @ video.comments.scope.any? %>など... –