を入力するか、値段に任意の単語を入力すると、小数点のフィールドにという単語が登録されます無料?ユーザーが価格フィールドに0または単語を入力すると「無料」という単語が含まれます
今のところ私はちょうど価格の存在を検証:
validates :price, :presence => true
を入力するか、値段に任意の単語を入力すると、小数点のフィールドにという単語が登録されます無料?ユーザーが価格フィールドに0または単語を入力すると「無料」という単語が含まれます
今のところ私はちょうど価格の存在を検証:
validates :price, :presence => true
は、私が今
#in your model
def price_string
price == 0 ? "Free" : price
end
def price_string=(string)
price = (string == "free" ? 0 : string)
end
あなたが参照できる「PRICE_STRING」のためのあなたのフィールド参照を取得/設定メソッドの新しいペアを持っているでしょうあなたのフォームの "price_string"に。
#in your form
f.text_field :price_string
私のprice_stringフィールド "wdwds"または0に入力しようとしましたが、 "価格は空白にできません"というエラーが戻ってきました。編集:私は正当な価格を試しても何も動作していないようです。 – LearningRoR
単純な方法は、before_validationコールバックを追加することです。
class ModelWithPrice < ActiveRecord::Base
# your validations ...
before_validation :convert_price_to_number
private
def convert_price_to_number
# no need to check for strings, to_f return 0.0 if the value cant be converted
self.price = self.price.to_f
# convert 0 to "Free" if needed
self.price = "Free" if self.price == 0
end
end
covert_price_to_numberは何をしていますか? – LearningRoR
価格属性のto_f(floatに変換)を呼び出します。価格が「無料」のように浮動小数点に変換できない文字列の場合、0.0 –
が返されますが、無効な価格を入力すると「フリー」という単語が入力されますか? – LearningRoR
あなたはjavascriptを使用してオンザフライで実行できます。 –
@Mikhail Nikalyukinはこれを正しい方向に向けることができますか? – LearningRoR