0

Ruby on Rails で AngularJS を使用しました。カスタムシンボルで通貨フィルターを使用しました。

<span>{{value|currency:'¥'}}<span>

フィルタは開発環境で正常に動作します。

¥1,000.00

ただし、本番モードで実行すると、通貨記号は特殊文字に変換されます。

�1,000.00

PS: すべてのファイルで UTF-8 エンコーディングを使用しました。production.rbで次のことを試しました

config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) }

問題を解決する方法はありますか?ありがとう

4

2 に答える 2

0

通貨フィルターをオーバーライドして追加することで、問題を修正するためにハックを行いました.replace(/\uFFFD/g, currencySymbol);

https://github.com/angular/angular.js/blob/1c1cd4fdf6b6d7511c7b8dc61b8042011dc54830/src/ng/filter/filters.jsから抽出した以下の元のコード

currencyFilter.$inject = ['$locale'];
function currencyFilter($locale) {
  var formats = $locale.NUMBER_FORMATS;
  return function(amount, currencySymbol){
    if (isUndefined(currencySymbol)) currencySymbol = formats.CURRENCY_SYM;
    return formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, 2)
           .replace(/\u00A4/g, currencySymbol);
  };
}

最終的なコードは次のようになります

return formatNumber(amount,currencyFormat , ',', '.', fractionSize).
        replace(/\u00A4/g, currencySymbol).replace(/\uFFFD/g, currencySymbol);
于 2013-04-19T05:37:04.680 に答える
0

production.rbこのようなものを環境ファイル に含めてみてはどうでしょうか?config.assets.precompile += %w( angular.js )

または、この宝石を使用する可能性がありますhttps://github.com/hiravgandhi/angularjs-rails

于 2013-04-15T16:32:20.460 に答える