确定是否填写了至少一对字段

时间:2015-06-19 10:20:40

标签: ruby-on-rails ruby

所以在我的rails应用程序中,我有一对成对的文本框。有4对文本框。

只需填写其中一对文本框(填写该对中的两个文本框)即可使其有效。

所以我试图遍历它们并将它们添加到多维数组中并检查数组中至少有一行(?)是否同时具有这两个值。

  def no__values?
    all_values = Array.new
    txt_a_values = Array.new
    txt_b_values = Array.new

    self.item.line_items.each do |item|
      txt_a_values << item.single.nil? # this is a value from the text box a
      txt_b_values << item.aggregate.nil? # this is a value from the text box b
    end

    all_values << txt_a_values #create multi dimensional array
    all_values << txt_b_values

    all_values.each do |v|
      ??? # there needs to be one pair in the array which has both values
    end
  end

所以它应该像这样创建一个数组

[true][true] # both textboxes are nil
[false][false] # both textboxes have values
[true][true] # both textboxes are nil
[true][true] # both textboxes are nil

上述情况是有效的,因为有一对BOTH具有值

我真的不喜欢我这样做的方式,所以我在寻找帮助。

2 个答案:

答案 0 :(得分:0)

你不能做这样的事情:

def no__values?
  self.item.line_items.each do |item|
    return false if !item.single.nil? && !item.aggregate.nil?      
  end

  true
end

当一对的两个值都不为空时,它将返回false,如果每对的值至少有一个空值,则返回true

编辑:
根据方法名称,我没有创建数组,而是直接返回false / true。

答案 1 :(得分:0)

我认为您正在寻找以下代码片段来解决您的问题。我做的很简单。如果您正在寻找,请告诉我。

def no__values?

    all_values = []

    self.item.line_items.each do |item|
      all_values << [item.single.nil?, item.aggregate.nil?]
    end

    all_values.each do |v|
      puts v # [true, false] or [true, true], [false, false]....
    end
  end