2013-04-15 90 views
0

我在Ruby on Rails中使用了AngularJS。我使用自定義符號的貨幣過濾器。AngularJS過濾器 - Ruby on Rails資產:預編譯問題

<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) } 

任何想法如何解決這個問題?謝謝你們

回答

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);