渲染Rails富文本Comment.body时出现额外内容的原因及解决方法
问题原因及解决方法
问题原因
核心问题出在comments/index视图的循环语法错误:你使用了<%= comments.each do |comment| %>,其中的<%=会将each方法的返回值(即整个comments集合对象)直接输出到页面中。当集合中的comment包含files附件时,集合的字符串化输出会附带附件的相关信息(比如图片预览或路径),最终表现为渲染结果末尾出现额外内容。
解决方法
将index视图中的循环起始行修改为不带等号的ERB标签:
<div> <% comments.each do |comment| %> <div> <%= turbo_frame_tag dom_id(comment) do %> <%= render "comments/show", comment: comment %> <% end %> </div><br> <% end %> </div>
仅需把<%=改为<%,这样只会执行循环逻辑,不会输出each的返回值,就能移除末尾的额外内容。
内容的提问来源于stack exchange,提问作者salty-ivy
相关产品推荐
相关产品推荐

