0

升级指南中它指出

Rails 4.0 移除了 ActionController::Base.asset_path 选项。使用资产管道功能。

我目前正在从 Rails 3.2 升级到 Rails 4.1。在我的应用程序中,我使用了 select2-rails gem,在我的 js 中,我为选择菜单选项添加了一个图像:

//mycode.js.erb
function format(image) {
    var image_path = "<%= asset_path('" + image.id.toLowerCase() +"') %>"
    return "<img class='flag' src='" + image_path + "' />";
}

以上在我的 Rails 3.2 应用程序中工作,但我似乎在升级到 4.1 时破坏了它,现在收到以下错误:

Sprockets::FileNotFound - couldn't find file '" + image.id.toLowerCase() +"'

在 Rails 4.1 中,asset_path 助手是否仍然可用?如果是的话,关于我可能出错的地方有什么想法吗?

更新

上面的代码在我的 .js.erb 文件中,它允许我在我的 js 文件中包含 Ruby 代码。这目前在我的 Rails 3.2 项目中运行良好。我这样做是因为 select2 允许我们按照以下示例格式化选择菜单项的显示:

//sample.js
function format(state) {
  if (!state.id) return state.text; // optgroup
  return "<img class='flag' src='images/flags/" + state.id.toLowerCase() +   ".png'/>" + state.text;
}

我的理解是使用资产管道路径而不是手动添加诸如“资产/图像/图标/小”之类的东西是正确的用法

4

0 回答 0