0

Rails 3.2.5を使用していますが、編集用に値o:priceが返されると、小数点以下1桁になります。600.0、データベースに小数点以下2桁(たとえば600.00)を入れる必要があります。600.00が記録されます。私のロケールでは、すでに小数点以下2桁に設定していますが、まだ機能しません。

私は試した

number_to_currency(:price, :precision => 2) 

しかし、それは「show」のようなビューにはうまく機能します。テキストフィールドで編集するための適切な値を返す必要があります。

私の移行では、フィールド「価格」はdecimal(15,2)で設定されています。

誰かが助けることができますか?

ありがとう!

4

4 に答える 4

3

テキストフィールドは、データベースに保存されているのではなく、ActiveRecordによって処理されるため、フィールドの「ネイティブ」値で動作します。

ActiveRecordはデータベース表現とruby/rails表現であるBigDecimalの間で変換を行うため、通貨フィールドには注意が必要です。

ユーザーに表示$1,000.00して編集できるようにすることが目標である場合は、次のようなアイデアがあります。

  1. イランSが参照するお金の宝石を使用してください。
  2. エディットインプレースウィジェット(スクリーンキャストなど)を使用します。number_to_currency値を表示するために使用します。クリックすると、入力フィールドに通貨記号なしの値、千単位の区切り文字のコンマなどが表示されます。これがExcelの動作方法であることに注意してください。通貨フィールドの値を編集するときは、1,000を入力しません。1000と入力します。
于 2012-08-16T21:19:36.680 に答える
1

'delocalize'gemを使用して問題を解決しました。古いが金!:) 皆さん、ありがとうございました!

于 2012-09-18T20:46:33.127 に答える
1

私の経験では、通貨を格納するために10進数を使用する代わりに、整数としてセント単位で金額を格納するのが最善です。これにより、現在発生している問題を含め、複数の問題が処理されます。

私は過去にMoneygemとそのコンパニオンMoney -railsを使用して多くの成功を収めてきました。

于 2012-08-16T21:06:22.447 に答える
0

text_fieldにフォーマットされた値を表示させる最も簡単な方法は、次のように明示的に渡すことです。

f.text_field :price, :value => number_to_currency(:price, :precision => 2) 

フォームを処理するコントローラーメソッドの値を解釈する(場合によっては再フォーマットする)必要があります。

Rails編集フィールドに表示される値をフォーマットするにはどうすればよいですか?を参照してください。

于 2012-08-16T21:27:09.080 に答える