在升级指南中它指出
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;
}
我的理解是使用资产管道路径而不是手动添加诸如“资产/图像/图标/小”之类的东西是正确的用法