上传图片时图片下方出现多余文本及路径显示问题求助
问题原因与解决方案
嘿,我一眼就定位到问题所在啦!你看到的多余文本和图片路径,是因为ERB标签用错了:
问题根源
在遍历图片的代码里,你写了:
<%= project.pictures.each do |p| %> <%= image_tag p.url %> <% end %>
这里的<%=会把Ruby代码的返回值直接输出到页面,而each方法执行完成后会返回它遍历的原集合(也就是project.pictures),所以页面上就额外打印出了这个集合的对象信息,包括图片路径之类的内容。
修复方案
只需要把遍历的ERB标签从<%=改成<%就行——这个标签是执行Ruby代码但不输出返回值的:
<li id="project-<%= project.id %>"> <%= link_to gravatar_for(project.user, size: 50), project.user %> <span class="user"><%= link_to project.user.name, project.user %></span> <span class="content"> <%= project.title %> <%= project.content %> <% project.pictures.each do |p| %> <%= image_tag p.url %> <% end %> </span> <span class="timestamp"> Posted <%= time_ago_in_words(project.created_at) %> ago. <% if current_user?(project.user) %> <%= link_to "delete", project, method: :delete, data: { confirm: "You sure?"} %> <%= link_to "edit", "/projects/#{project.id}/edit", method: :get %> <% end %> </span> </li>
小知识点补充
<% %>:执行Ruby代码,不输出任何内容到页面<%= %>:执行Ruby代码,将返回值输出到页面
以后处理遍历、条件判断这类不需要输出返回值的逻辑时,记得用不带等号的标签哦~
内容的提问来源于stack exchange,提问作者spd_25
相关产品推荐
相关产品推荐

