Basic语句在Sinatra“get”方法中没有按预期执行

时间:2012-07-26 21:53:48

标签: ruby if-statement sinatra

在我的.erb文件中,我有以下jQuery调用:

$.get(url, { point: pointValue, chore: investigate });

pointchore都是整数。

在我的.rb文件中,我有以下声明:

get '/estimate/:id' do

  print params[:chore]  # for debugging

  if params[:chore] == 1
    print "true!"
  end

end

当我打印params[:chore]时,在我的控制台中打印出正确的值,0或1。

但是,即使在1的情况下,if块也不会执行,即"true!"不会打印到控制台。

我完全被困惑和困惑!有什么想法吗?

2 个答案:

答案 0 :(得分:2)

数字1属于Fixnum类。您的chore值可能不会。在比较(if params[:chore].to_i == 1)或检查chore参数键(puts params[:chore].class)之前将其转换为整数。

答案 1 :(得分:2)

请求中的参数总是以String类型返回。您需要将其转换为整数(通过String#to_i),以便进行比较(或者,与“1”进行比较)。