【问题标题】:validate a form field depending on radio button value根据单选按钮值验证表单字段
【发布时间】:2015-10-07 22:56:31
【问题描述】:

我没有使用 ActiveRecords,而是使用 ActiveModel 来验证表单数据。 我陷入了需要根据单选按钮值验证表单字段的地方。

我的模特是

 class Payment
    include ActiveModel::Model
    attr_accessor :method_id, :crad_name
    validates_presence_of :card_name, :if => :method_type? 

   private
   def method_type?
     self.method_id == 1
   end
 end

这里,method_id = 1 表示信用卡,method_id = 2 表示银行

这不会验证表单域,也不会显示任何错误。

我在 google 中搜索并找到了一些有价值的东西在这里Rails - How to validate a field only if a another field has a certain value?

但在这种情况下它不起作用。提前感谢您的建议和帮助

【问题讨论】:

    标签: ruby-on-rails activemodel


    【解决方案1】:

    你快到了。我首先想说的是,使用 Method 作为模型名称并不是一个好主意,因为它通常被认为是保留字。继续前进。

    class Payment
      attr_accessor :method_id, crad_name
      validates_presence_of :card_name, :unless => :method_id.nil? 
    
    end
    

    【讨论】:

    • 感谢您的快速回复@trh,但问题是我有两个选项,单选按钮 method_id = 1 用于信用卡,method_id = 2 用于银行。
    【解决方案2】:

    试试这个

    class Payment
      include ActiveModel::Model
      attr_accessor :method_id, :crad_name
      validates_presence_of :card_name, :if => lambda { |pay| pay.method_id == 1 }
    end
    

    编辑 试试这个或推荐Active Record Validations

    class Payment
      include ActiveModel::Model
      attr_accessor :method_id, :crad_name
      validates :card_name, presence: true, if: :method_type?
    
      private
    
      def method_type?
        method_id == 1
      end      
    end
    

    这肯定会起作用,否则上帝会帮助我!

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多