【问题标题】:Rails 4 Javascript: Having trouble with image pathsRails 4 Javascript:图像路径有问题
【发布时间】:2014-03-28 12:58:22
【问题描述】:

我试图让背景图像每 6 秒更改一次,但始终是 404 错误:

例如在JS控制台中出现如下

http://localhost:3000/app/assets/images/ggb_mist.png 404 (Not Found) 

为了简化这一点,我只是尝试了background-color 以确保它正常工作。见下文:

$(document).ready(function() {
  function testing() {
    $('.holder').css('background-color', 'red');
  };
});

以上工作。现在,当我尝试对图像(位于 app/assets/images/imagefilenamehere.png 中)执行相同操作时,我总是收到 404 错误。我尝试过:

filenamehere.png
../assets/images/filenamehere.png
../app/assets/images/filenamehere.png
../images/filenamehere.png

为什么下面的不起作用?

$('.holder').css({'backgroundImage':'../assets/images/filenamehere.png'});

感谢您就此事提供任何意见。

【问题讨论】:

    标签: javascript image ruby-on-rails-4 asset-pipeline relative-path


    【解决方案1】:

    这解决了我的问题:Section 2.3.1 of guides.rubyonrails.org/asset_pipeline.html

    $('.holder').css("background-image","url(<%= asset_path('tree-rays.jpg') %>)");
    

    请注意,tree-rays.jpg 位于 app/assets/images(Rails 4 应用程序)中。

    【讨论】:

    • 这对我有用,而不是平静的回答。关键是 url(...) 在 ruby​​ 表达式周围,并使用逗号而不是冒号。
    • 这是有史以来最好的解决方案,但我认为您不能在 .js 文件中使用asset_path .. 那怎么样?
    【解决方案2】:

    您可以使用 .erb(嵌入式 ruby​​)扩展来允许在您的 .js 文件中使用 rails 路径助手:

    1) 使用图像路径助手将原始文件 (my_script.js) 保存为 my_script.js.erb

    $('.holder').css({"background-image":"<%= asset_path('filenamehere.png') %>"});
    

    另外,请确保您的资产管道设置正确:

    来自 Rails 资产管道指南 (http://guides.rubyonrails.org/asset_pipeline.html)

    2) 您的 javascript 文件 (my_script.js.erb) 在里面:

    app/assets/javascripts/
    lib/assets/javascripts/
    vendor/assets/javascripts/
    vendor/assets/somepackage/
    

    3) 清单中引用了您的文件(可能是app/assets/javascripts/application.js):

    //= require my_script
    

    【讨论】:

    • 感谢您的回答。该文件最初是welcome.js.coffee,所以我注释掉了咖啡宝石并制作了文件welcome.js。现在我把它改成了welcome.js.erb 并应用了上面的jQuery。我的application.js 确实在app/assets/javascripts/ 中,而//=require welcomeapplication.js 中并没有改变任何东西。 js 控制台中没有错误(我可以得到警报)。
    • 很高兴:请参阅此处第 2.3.1 节 guides.rubyonrails.org/asset_pipeline.html 。为你投票,因为你基本上是对的。
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多