2012-03-24 28 views
1

我的设置包括ruby 1.9.3,Rails 3.2和jQuery 1.7.1。我发现,jQuery是将请求发送到/assets/images/image_file.png,而不是仅仅/assets/image_file.png其结果都是无效链接如下所示的图像:Rails 3.2,jQuery 1.7.1链接资产/图片破解

jQery link to image broken. other css,js and images files are referenced in assets correctly.

我从Asset Organization知道Rails在js,css和图像文件的资产中查找适当的文件夹。所以我知道它应该在引用为/ assets/images的图像的子目录'images'中查找。我在assets/images(app/assets/images/images)中创建了一个子目录图像,并在那里复制了引用的图像,并且它工作正常。

但不应该在资产目录中正确引用图像。下面是用线生产错误的错误引用的jQuery代码高亮:

jQuery code resulting in broken link, line producing error highlighted.

是否有需要在application.rb中或环境文件设置为设置jQuery的资产路径中的任何配置参数?或者任何其他方式来解决这个问题?

+0

我不知道我是否理解你的问题,但你可以搜索你的css文件,并让我知道哪个文件和地方'ui-bg_glass_80_d7ebf9_1x400.png'已被写入? – 2012-03-24 12:16:04

回答

1

在您的项目下围绕CSS搜索&将images/ui-bg_glass_80_d7ebf9_1x400.png更改为ui-bg_glass_80_d7ebf9_1x400.png,希望它有效。

+0

谢谢。在项目中搜索并发现问题出现在jquery-ui-1.8.18.custom.css文件中。所有的图像链接都以'images /'开头。现在我会替换所有链接,但我认为它应该在Rails中解决,以便可以使用jquery-ui或其他css文件。 – Zeeshan 2012-03-24 12:53:53

+0

欢迎,它没有Rails + jQuery的问题,它是一个问题,因为自定义css与jQuery UI一起使用,所以我们必须自己照顾它。任何技术都会因为自定义CSS而出现同样的问题。无论如何,很高兴知道你找到你的解决方案...... :) – 2012-03-24 13:03:57

+0

我将'url(images/image_file_name)'出现在'url(image_file_name)',并尝试了'url(/ images/image_file_name)'in jquery-ui自定义css文件。但它仍然会导致图像链接断开,并且问题中显示的jquery.js文件具有相同的代码引用。 – Zeeshan 2012-03-24 13:05:54

0

发生这种情况是因为jquery-ui-1.8.18.custom.css文件预计其图像相对于CSS文件本身位于images目录中。
但是,Rails 3资产管道将CSS文件移动到不同的位置,因此图像路径不再起作用。

标准布局,如果你下载的jQuery UI的“开始”的主题是:

stylesheets/start/ 
stylesheets/start/jquery-ui-1.8.11.custom.css 
stylesheets/start/images/ 

但资产管道安排是这样的:

stylesheets/ 
stylesheets/jquery-ui-1.8.11.custom.css 
stylesheets/start/images/ 

所以/images/ui-bg_glass_80_d7ebf9_1x400.png的相对路径不再作品。

我有一个解决办法是增加一个别名指令到我的Apache配置:

Alias /assets/images "<path to site>/public/assets/start/images" 

这里假设你的资产是符号链接到公共目录。
您可以更改该路径,以直接指向您的资产从哪个服务提供。

这是一个kludge,如果我决定改变主题(极不可能),我需要更新我的Apache配置。
但是对我来说,重写CSS文件来更改路径会更好,因为升级时会变得很痛苦。

希望这会有所帮助。

相关问题