Javascript 在jquery函数中引用rails图像
我有一个jquery函数,用来改变页面的背景。我希望背景是app/assets/images目录中的图像。但是,我不知道如何正确地引用资产管道中的图像 这是我现在的路线:Javascript 在jquery函数中引用rails图像,javascript,jquery,css,ruby-on-rails,asset-pipeline,Javascript,Jquery,Css,Ruby On Rails,Asset Pipeline,我有一个jquery函数,用来改变页面的背景。我希望背景是app/assets/images目录中的图像。但是,我不知道如何正确地引用资产管道中的图像 这是我现在的路线: $('body').css("background-image", "url('welcome.png')"); 在url参数中访问图像的最佳方式是什么?$'body'.cssbackground image,url'/app/assets/images/welcome.png' 假设应用程序位于文档根。$'body
$('body').css("background-image", "url('welcome.png')");
在url参数中访问图像的最佳方式是什么?$'body'.cssbackground image,url'/app/assets/images/welcome.png'
假设应用程序位于文档根。$'body'.cssbackground image,url'/app/assets/images/welcome.png'
假设应用程序位于文档根目录下。尝试以下操作:
$('body').css("background-image", "url('/assets/welcome.png')");
要访问管道中的资产,必须指定资产文件夹
我一直在试图找到我读到这篇文章的地方,但Rails基本上会将所有资产帮助器url转换为类似于/assets/asset.png或类似于/assets/stylesheet.css的内容,因此您应该可以通过在源url中指定资产文件夹来完成相同的操作。尝试以下操作:
$('body').css("background-image", "url('/assets/welcome.png')");
要访问管道中的资产,必须指定资产文件夹
我一直在试图找到我读到这篇文章的地方,但Rails基本上会将所有资产帮助器url转换为类似于/assets/asset.png或类似于/assets/stylesheet.css的内容,因此您应该能够通过在源url中指定资产文件夹来完成相同的操作。文档中介绍了这一点: 您应该使用2.3.3 JavaScript/CoffeeScript和ERB中描述的方法,这意味着将.ERB扩展名添加到JS文件中,并使用asset_path 另一种更优雅的方法是将图像移动到css.scss文件中的类定义中,然后在jQuery中添加该类:
.welcome {
background-image: url(image-path('welcome.png'));
}
$('body').addClass("welcome");
在jQuery中:
.welcome {
background-image: url(image-path('welcome.png'));
}
$('body').addClass("welcome");
文件中包括了这一点: 您应该使用2.3.3 JavaScript/CoffeeScript和ERB中描述的方法,这意味着将.ERB扩展名添加到JS文件中,并使用asset_path 另一种更优雅的方法是将图像移动到css.scss文件中的类定义中,然后在jQuery中添加该类:
.welcome {
background-image: url(image-path('welcome.png'));
}
$('body').addClass("welcome");
在jQuery中:
.welcome {
background-image: url(image-path('welcome.png'));
}
$('body').addClass("welcome");
在我看来,您需要使用.erb嵌入式ruby扩展来允许在.js文件中使用rails路径助手。例如,如果您的js文件balabala.js位于asset/javscripts/中,请将其名称更改为balabala.js.erb,然后使用:
$('body').css({"background-image":"<%= asset_path({'filenamehere.png') %>"});
那么它应该可以工作了在我看来,您需要使用.erb嵌入式ruby扩展在.js文件中允许rails路径助手。例如,如果您的js文件balabala.js位于asset/javscripts/中,请将其名称更改为balabala.js.erb,然后使用:
$('body').css({"background-image":"<%= asset_path({'filenamehere.png') %>"});
那么它应该会起作用您当前使用的方法有什么问题?将相对于页面的路径放在括号之间:url'app/assets/images/welcome.png'您有gemjquery导轨吗?您当前使用的方法有什么问题?将相对于页面的路径放在括号之间:url'app/assets/images/welcome.png'你有gem jquery rails吗?当我这样做时,它只抛出一个404。如果没有你的文件结构和服务器配置,就无法提供帮助。对不起:/我认为你不需要指定完整的应用程序路径。当我这样做时,它只是抛出了一个404。如果没有您的文件结构和服务器配置,就无法提供帮助。抱歉:/I我认为您不需要指定完整的应用程序路径。这是一个很好的答案,在javascript中修复url的值没有问题。但这个解决方案并不太好,当我看到这个显而易见的建议并改变主意时,我正朝着这个方向走。谢谢。这是一个很好的答案,在javascript中修复url的值没有问题。但这个解决方案并不太好,当我看到这个显而易见的建议并改变主意时,我正朝着这个方向走。谢谢。这个解决方案已经过时了,我会推荐下面@tirdadc的答案。这个解决方案已经过时了,我会推荐下面@tirdadc的答案。