我的 Ruby on Rails 网站上需要一张可拖动的图片,一切正常,只是图片不显示。
这是图片及其属性的代码:
<img id="drag1" src="/images/img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
如果我这样写,图片会显示:
<%= image_tag("img_logo.gif") %>
我的问题:我需要在上面的代码中插入什么,才能显示我的图片 (img_logo.gif)?
图片本身位于:/app/assets/images/img_logo.gif
写入此代码的文件是一个 html.erb 文件。
我还没有安装任何像 paperclip 或 imagemagick 这样的 gem。
编辑:感谢 Meagar 和 Vic,这会起作用:
要么这样:
<%= image_tag('img_logo.gif', draggable: "true", id: "drag1") %>
或者这个:
<img id="drag1" src="<%= asset_path('img_logo.gif') %>" draggable="true" ondragstart="drag(event)" width="336" height="69">
最佳答案
如果<img id="drag1" src="/images/img_logo.gif"
正在工作,那么图像不在您的 Assets 管道中,它在 public/images
中.
如果图像是在您的 Assets 管道中,位于app/assets/images/img_logo.gif
, 那么它的正确 URL 将是 /assets/img_logo.gif
.
您拥有的代码,image_tag("img_logo.gif")
是正确的,因为它将输出正确的 URL /assets/img_logo.gif
,假设图像在您所说的位置,并且您没有更改有关 Assets 管道的任何设置。您可以使用 /images/img_logo.gif
成功请求图像这一事实告诉我情况并非如此,您没有准确描述您的情况。
关于您的评论:
Thanks for your answer: It works, when I typed this in:
<img id="drag1" src="/assets/img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
不要那样做。
我认为您向后传达了正在发生的事情。我明白 <img src="/images/img_logo.gif"
正在工作,那image_tag
失败了。我现在看到 image_tag
一直在工作,但您试图弄清楚如何向 id="drag1" draggable=true
提供额外的属性(<img>
等)正在输出标签。
您不能像这样硬编码 Assets 路径。它将在开发中工作,但 Assets URL 在生产中不同,您的网站将停止工作。
要实现您的目标,您可以将属性传递给您的 image_tag
助手,或者你可以使用 asset_path
在您的 HTML 标记中:
要么这个...
<%= image_tag('img_logo.gif', draggable: "true", id: "drag1") %>
或者这个...
<img id="drag1" src="<%= asset_path('img_logo.gif') %>" draggable="true" ondragstart="drag(event)" width="336" height="69">
但是不要使用这个:
<img id="drag1" src="/assets/img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
关于html - Ruby on Rails : Show picture in html in html. erb 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34420549/