Met*_*ker 3 html ruby-on-rails
我在Ruby on Rails网站上需要一张可拖动的图片,并且除图片没有显示之外,其他所有东西都工作正常。
这是图片的代码及其属性:
<img id="drag1" src="/images/img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
Run Code Online (Sandbox Code Playgroud)
如果我这样写,图片就会显示出来:
<%= image_tag("img_logo.gif") %>
Run Code Online (Sandbox Code Playgroud)
我的问题:我需要在上方代码中插入什么,以便我的图片(img_logo.gif)出现?
图片本身位于:/app/assets/images/img_logo.gif
编写此代码的文件是html.erb文件。
我还没有安装回形针或imagemagick之类的宝石。
编辑:感谢Meagar和Vic,这将起作用:
可以这样:
<%= image_tag('img_logo.gif', draggable: "true", id: "drag1") %>
Run Code Online (Sandbox Code Playgroud)
或这个:
<img id="drag1" src="<%= asset_path('img_logo.gif') %>" draggable="true" ondragstart="drag(event)" width="336" height="69">
Run Code Online (Sandbox Code Playgroud)
如果<img id="drag1" src="/images/img_logo.gif"有效,则图片不在您的资产管道中,而是在中public/images。
如果图像是在资产的管道,在app/assets/images/img_logo.gif,那么对于它的正确的URL会/assets/img_logo.gif。
您所拥有的代码image_tag("img_logo.gif") 是正确的,因为它将输出正确的URL /assets/img_logo.gif,并假设图像位于您所说的位置,并且您尚未更改有关资产管道的任何设置。您可以成功使用来请求图像的事实/images/img_logo.gif告诉我事实并非如此,并且您还没有准确描述您的情况。
感谢您的回答:当我输入以下内容时,它可以工作:
<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>标签提供额外的属性(等)。
您不能像这样硬编码资产路径。它可以在开发中使用,但是资产URL 在生产中有所不同,并且您的网站将停止工作。
要实现您的目标,可以将属性传递给image_tag助手,也可以asset_path在HTML标签中使用:
要么...
<%= image_tag('img_logo.gif', draggable: "true", id: "drag1") %>
Run Code Online (Sandbox Code Playgroud)
或这个...
<img id="drag1" src="<%= asset_path('img_logo.gif') %>" draggable="true" ondragstart="drag(event)" width="336" height="69">
Run Code Online (Sandbox Code Playgroud)
但是不要使用这个:
<img id="drag1" src="/assets/img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
Run Code Online (Sandbox Code Playgroud)