Ruby on rails image_path()为引擎资源生成错误的映像路径

Ruby on rails image_path()为引擎资源生成错误的映像路径,ruby-on-rails,sass,asset-pipeline,Ruby On Rails,Sass,Asset Pipeline,我正在使用rails4+ruby2并尝试创建rails引擎。这个引擎有一个单独的assets目录,它有自己的样式表(sass)、Java脚本和图像 问题是,image\u path()。假设我的引擎名为“Admin”。在/admin/app/assets/images/admin/arrow.png中有一个名为arrow.png的图像文件 如果在application.css.sass中我将使用background:url(image\u path('arrow.png')),它将生成以下url

我正在使用rails4+ruby2并尝试创建rails引擎。这个引擎有一个单独的assets目录,它有自己的样式表(sass)、Java脚本和图像

问题是,
image\u path()。假设我的引擎名为“Admin”。在
/admin/app/assets/images/admin/arrow.png
中有一个名为
arrow.png
的图像文件

如果在
application.css.sass
中我将使用
background:url(image\u path('arrow.png'))
,它将生成以下url:
/assets/arrow.png
,这将不起作用。正确的url是
/assets/admin/arrow.png

目前可能有两种解决方案:

  • 将所有
    /admin/app/assets/admin/images/*
    移动到
    /admin/app/assets/images
    ,或
  • image\u path()
    方法中的所有图像名称前面加上引擎名,该引擎名为
    image\u path('admin/arrow.png')

  • 还有其他更好的方法来处理这件事吗?

    最好的解决方案是:

    image\u路径('admin/arrow.png')
    asset\u路径('admin/arrow.png')

    As子文件夹也会合并到
    公共/资产中
    。这意味着
    app/assets/javascripts/subfolder/*
    app/assets/stylesheets/subfolder/*
    现在都位于
    public/assets/subfolder/*