2011-03-27 111 views
0

我想通過我的模型中的方法進行自定義搜索。其中一個搜索條件如下所示:條件陳述

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

     status = give_status(left, right) 

     where << "status_id_number = #{status}" 

該參數來自兩個下拉菜單。我的問題是設置狀態的值。 如果我這樣做是正確設置從左邊PARAM值:

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

我想有它設置如下圖所示。在左側和右側變量進行比較,然後根據條件分配一定的返回值。下面的代碼將返回2,即使我把左邊和右邊設置爲1

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

回答

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