Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery函数中引用rails图像_Javascript_Jquery_Css_Ruby On Rails_Asset Pipeline - Fatal编程技术网

Javascript 在jquery函数中引用rails图像

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

我有一个jquery函数,用来改变页面的背景。我希望背景是app/assets/images目录中的图像。但是,我不知道如何正确地引用资产管道中的图像

这是我现在的路线:

    $('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的答案。