Rails 4.2:JS中的图像路径问题

Rails 4.2 : image path trouble in JS

本文关键字:图像 路径 问题 JS Rails      更新时间:2023-09-26

以下是我的代码的一部分。没有加载背景图像。我尝试过类似'<%=asset_path("images/bg1.jpg"(%>'和"images/bg1.jpg"等。我是新手,有人能给我指正确的方向吗?

$(".login-bg").backstretch(["bg1.jpg","bg2.jpg","bg3.jpg"],{fade:1e3,duration:8e3})

来自演示:

$.backstretch([
      "http://dl.dropbox.com/u/515046/www/outside.jpg"
    , "http://dl.dropbox.com/u/515046/www/garfield-interior.jpg"
    , "http://dl.dropbox.com/u/515046/www/cheers.jpg"
], {duration: 3000, fade: 750});  

显然,您的代码无法工作,因为您所做的只是传递字符串。相反,你想做的是通过为你的图像提供服务的路线。

假设您在javascript文件中有这个,您将无法使用rails助手。在这种情况下,你必须做的是:

  • 构建一个为以下映像提供服务的控制器:ImagesController
  • 只需将图片上传到在线云上,并将链接放入阵列中

或者,您应该能够在视图(html.erb(中编写一个script,并且您应该能够通过这种方式访问rails辅助对象。然后,您就可以将链接插入为字符串。

"[#{image_path('bg1.jpg')}", "#{image_path('bg2.jpg')}"]

您提供的代码是Javascript,将从用户的浏览器在用户的机器上执行。因此,它将无法直接访问应用程序服务器上images目录中的文件。

如果您将Javascript文件命名为something.js.erb,则可以在其中嵌入Ruby代码,以便通过资产管道进行扩展,例如:

$(".login-bg")
  .backstretch(
    ["<%= image_url('bg1.jpg') %>",
     "<%= image_url('bg2.jpg') %>",
     "<%= image_url('bg3.jpg') %>"
    ],
    { fade: 1e3, duration: 8e3 }
  )

Rails资产管道指南是关于如何使用这些功能的极好信息来源。