条件陈述

时间:2011-03-27 17:56:33

标签: ruby-on-rails ruby

我想通过模型中的方法进行自定义搜索。其中一个搜索条件如下:

      left = params[:left][:left_id]
      right = params[:right][:right_id]

      status = give_status(left, right)

      where << "status_id_number = #{status}"

params来自两个下拉菜单。我的问题是设置状态值。 如果我这样做,它会正确设置左侧参数的值:

         def self.give_status(left, right)
           return left
         end

我想让它设置如下。比较左右变量,然后根据条件分配某个返回值。即使我将左右设置为1,下面的代码也会返回2。

       def self.give_status(left, right)
         if left == 1 and right == 1
          return 1
         else 
          return 2
        end
       end

1 个答案:

答案 0 :(得分:3)

问题是您的param会返回字符串

def self.give_status(left, right)
  if left.to_i == 1 and right.to_i == 1
    1
  else 
    2
  end
end

简短表格

def self.give_status(left, right)
  left.to_i == 1 && right.to_i == 1 ? 1 : 2
end

或者在开头就把它弄好:

left = params[:left][:left_id].to_i
right = params[:right][:right_id].to_i
status = give_status(left, right)
where << "status_id_number = #{status}"

def self.give_status(left, right)
  left == 1 && right == 1 ? 1 : 2
end