アップグレードガイドには、次のように記載されています
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() +"'
asset_path ヘルパーは Rails 4.1 でも利用できますか? はいの場合、私がどこで間違っていたのかについてのアイデアはありますか?
アップデート
上記のコードは .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;
}
私の理解では、「assets/images/icons/small」のようなものを手動で追加するのではなく、アセット パイプライン パスを使用するのが正しい使い方であるということでした。