1

奇妙に思えますが、そうですか?

validates_presence_of [:visa, :mc, :discover, :amex], :if => :credit_card => true

ブラウザで構文エラーが発生するため、入力を受け付けます。ありがとう。

4

3 に答える 3

1

あなたはまた、procでそれを行うことができます

validates :visa, :mc, :discover, :amex, :presence => true, :if => Proc.new{|model| model.credit_card.present?}
于 2012-05-10T22:05:38.133 に答える
1

これを試して

validates :visa, :mc, :discover, :amex, :presence => true, :if => :credit_card?

クレジットカードがブールフィールドの場合。

そうでなければメソッドを定義する

def credit_card?
    credit_card.present?
end
于 2012-05-10T21:59:19.797 に答える
0

了解しましたが、それは苦痛でした。そして、決して完璧ではありません。次のステップは、ユーザーがクレジットカードまたは小切手のみを選択できるようにすることです。Jquery?

model.rb

validate :check_if_at_least_one_credit_card, :if => "credit_card=='1'"
validate :check_if_check_is_clicked, :if => "check=='1'"

private

  def check_if_at_least_one_credit_card
    unless mc=="1" || visa=="1" || amex=="1" || discover=="1"
      errors.add(:base, "You need to choose at least one credit card type")
    end
  end

  def check_if_check_is_clicked
    unless check=="1"
      errors.add(:base, "You need to choose check or credit card")
    end
  end

次に、これをクリーンアップする必要がありますが、意図したとおりに機能します。

template.html.haml

%p{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.check=="1" ? 'Check' : ''
%p{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.credit_card=="1" ? 'Credit Card' : ''
%ul
  %li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.discover=="1" ? 'Discover' : ''
  %li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.amex=="1" ? 'American Express' : ''
  %li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.mc=="1" ? 'Mastercard' : ''
  %li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.visa=="1" ? 'Visa' : ''
于 2012-05-11T16:54:57.310 に答える