1

Rails アプリケーションで数字をコンマで出力したいと考えています。ここの回答に従って、印刷するすべての数字をラップできます

number_with_delimiter(@number, :delimiter => ',')

ただし、ビューに移動して手動で適用したくありません。むしろ、整数が出力される方法をオーバーライドしたいと思います。

Java/jsp では、<%= %> タグ内のすべてのものがページに印刷される内容を評価するための呼び出しを取得するため、クラスのメソッドをtoString()オーバーライドするとうまくいくと考えました。to_sInteger

class Integer
  def to_s
    number_with_delimiter(self, :delimiter => ',')
  end
end

残念ながら、タグを使用して出力された数字<%=%>がカンマで表示されないため、これは機能しません。(エラーは発生しません。)

どうすればこれを正しく理解できますか? ブロックは、指定されたオブジェクト<%=%>のメソッドを自動的に呼び出しませんか? to_s印刷するものをどのように評価しますか?

4

1 に答える 1

0

あなたは間違ったことにパッチを当てています。パッチを適用したいのですFixnum。例えば:

>> class Fixnum
>>   def to_s
>>     'pancakes'
>>     end
>>   end
=> nil
>> 1.to_s
=> "pancakes"

ERB の場合:

>> ERB.new('<%= 11 %>').result
=> "pancakes"

そうは言っても、あなたのショートカット (ほとんどのショートカットと同様) は、おそらく他の場所でさまざまな新しい興味深い問題を引き起こすことになるでしょう. 最終的'1,000'に何か (データベースやクライアント側の JavaScript など) に送信すること'1000'になり、自分の努力に紛らわしいヒッシーな適合が得られます。Floatやなどの他の数値クラスについても心配する必要がありBignumます。

自分の見解を修正し、自分の怠惰を気にしないでください。

于 2012-10-25T03:04:03.817 に答える