Javascript 需要Rails应用程序中本机HTML的图像路径

Javascript 需要Rails应用程序中本机HTML的图像路径,javascript,jquery,html,ruby-on-rails,Javascript,Jquery,Html,Ruby On Rails,Rails 4、Ruby 2、jQuery 1.11 我的应用程序有使用DataTables构建的表。我正在使用jQuery修改这些表的HTML。我正在尝试添加资产/图像中的图像,但我似乎无法确定访问该图像所需的路径。因为我在预处理后编辑HTML,所以它是原生HTML,我不能在其中使用Rails变量 我可以让Rails识别图像,或者更具体地说是RubyMine。由于我使用JavaScript,因此路径../images可以访问该图像。但是,这不适用于HTML 我的问题是,如果一个图像位于app/

Rails 4、Ruby 2、jQuery 1.11

我的应用程序有使用DataTables构建的表。我正在使用jQuery修改这些表的HTML。我正在尝试添加资产/图像中的图像,但我似乎无法确定访问该图像所需的路径。因为我在预处理后编辑HTML,所以它是原生HTML,我不能在其中使用Rails变量

我可以让Rails识别图像,或者更具体地说是RubyMine。由于我使用JavaScript,因此路径../images可以访问该图像。但是,这不适用于HTML

我的问题是,如果一个图像位于app/assets/images中,那么我必须为原生HTML指定什么路径才能访问该图像

$('input[type=search]').each(function () {
    var $this = $(this);
    $this.addClass("theSearch");
    $('.theSearch')
        .append('<img id="clrImg" class="clrSearch" src="../images/DeleteRed.png" />');
...
FWIW,这将是一个按钮,当点击时清除搜索字段。现在,它正在使用一个X,但这只是丑陋的

我应该注意到,我已经尝试了许多/app/assets/images/…

的排列,找到了答案

资产不仅要经过预处理,而且还要经过美化并公开安装。我将它复制到public/assets/images,并可以作为assets/images/DeleteRed.png访问它

谢谢

更新: 这只在某些情况下有效。当我使用这个应用程序时,我发现URI发生了变化。虽然绝对URI存在一些问题,但它始终有效:

http://myprefix.mydomain.com/assets/images/DeleteRed.png

例如,当myprefix或mydomain发生更改时(例如,当我将其推送到生产环境时),这将失败。最好测试系统变量并为测试、开发、生产等构建路径。

如果您的javascript文件存储在app/assets/javascripts中,扩展名为.js.erb,您可以像在HTML视图中一样插入Ruby代码:

$('input[type=search]').each(function () {
  // ...
  $('.theSearch')
    .append('<img id="clrImg" class="clrSearch" src="<%= image_path('DeleteRed.png') %>" />');
  // ...
});

js文件将由资产管道自动预处理,如果您的图像存储在app/assets/images中,image\u path Rails助手将确保路径始终正确,也就是说,无需将其移动到public

嗯,听起来不错。但是,这对我根本不起作用。我将文件重命名为filename.js.erb。我加入了变量。它们从未被处理过,它们最终进入了运行脚本,与我输入的完全相同。有什么线索可以解释为什么会这样吗?谢谢。Rails 4默认情况下会启用预处理,因此可能您的应用程序中存在配置问题。日志/development.log中是否存在任何相关警告或错误?你能在没有任何公共资产的情况下尝试吗?你能在你的配置文件中发布config.assets.*设置吗?这里有一个相关的问题,如果有帮助的话: