image_path()为引擎资产生成错误的图像路径

时间:2013-11-20 21:45:42

标签: ruby-on-rails sass asset-pipeline

我正在使用rails4 + ruby​​2并尝试创建一个rails引擎。这个引擎有一个独立的资产目录,它有自己的样式表(sass),javascripts和图像。

问题是,image_path() sass助手会生成错误的图像路径。让我们说我的引擎被称为“管理员”。 arrow.png中有一个名为/admin/app/assets/images/admin/arrow.png的图像文件。

如果在application.css.sass我要使用background: url(image_path('arrow.png')),它会生成以下网址:/assets/arrow.png,这将无效。正确的网址是/assets/admin/arrow.png

现在可能有两种可能的解决方案:

  1. 将所有/admin/app/assets/admin/images/*移至/admin/app/assets/images
  2. 使用引擎名称image_path()方法为所有图片名称添加前缀image_path('admin/arrow.png')
  3. 还有其他更好的方法来处理这件事吗?

1 个答案:

答案 0 :(得分:2)

最佳解决方案是:

image_path('admin/arrow.png')asset_path('admin/arrow.png')

由于子文件夹也合并到public/assets。这意味着app/assets/javascripts/subfolder/*app/assets/stylesheets/subfolder/*现在都位于public/assets/subfolder/*