Ruby/Rails 三元和范围
Ruby/Rails ternary and range
我想过滤一个参数,如果它在 1 到 100 的范围内。
控制器:
@range = search_range(params[:range])
助手:
def search_range(range)
range = range.to_i
range == 1..100 ? range : 30
end
但它总是 returns 30... 尝试了很多东西并且正常 "if/else" 但想要三元运算符。
谢谢
如果您的 params[:range]
return 是一个数字,我认为您可能需要如下内容:
def search_range(range)
range = range.to_i
range == (1..100).include?(range) ? range : 30
end
你是这个意思吗? IE。如果 'range' 变量在 1 到 100 之间 return 它,否则 30?
更新:
我已经对页面上的选项进行了快速基准测试,between?
出现得最快:
user system total real
include? 0.230000 0.000000 0.230000 ( 0.239637)
between? 0.130000 0.000000 0.130000 ( 0.129158)
=== 0.290000 0.000000 0.290000 ( 0.293817)
Just want to check if params[:range] is between 1..100. If not return 30
这应该有效:
def search_range(range)
range = range.to_i
range.between?(1, 100) ? range : 30
end
您的代码的问题是 ==
比较对象,即:
20 == 1..100
#=> false
检查整数 20
是否(数值上)等于范围 1..100
。当然不是,1..100
甚至不是一个数字。
我想过滤一个参数,如果它在 1 到 100 的范围内。
控制器:
@range = search_range(params[:range])
助手:
def search_range(range)
range = range.to_i
range == 1..100 ? range : 30
end
但它总是 returns 30... 尝试了很多东西并且正常 "if/else" 但想要三元运算符。 谢谢
如果您的 params[:range]
return 是一个数字,我认为您可能需要如下内容:
def search_range(range)
range = range.to_i
range == (1..100).include?(range) ? range : 30
end
你是这个意思吗? IE。如果 'range' 变量在 1 到 100 之间 return 它,否则 30?
更新:
我已经对页面上的选项进行了快速基准测试,between?
出现得最快:
user system total real
include? 0.230000 0.000000 0.230000 ( 0.239637)
between? 0.130000 0.000000 0.130000 ( 0.129158)
=== 0.290000 0.000000 0.290000 ( 0.293817)
Just want to check if params[:range] is between 1..100. If not return 30
这应该有效:
def search_range(range)
range = range.to_i
range.between?(1, 100) ? range : 30
end
您的代码的问题是 ==
比较对象,即:
20 == 1..100
#=> false
检查整数 20
是否(数值上)等于范围 1..100
。当然不是,1..100
甚至不是一个数字。