在Ruby on Rails中传递布尔型参数

3

我的Ruby on Rails函数应该接收一个布尔参数,检查它,如果为真,则执行某些操作。

  def isReady
     if (params[:ready] == true)
            doSomething()
     end
  end

然而,使用下面的示例时,我们永远不会进入这个 if (但它会进入函数),可能是因为参数被作为字符串而不是布尔值传递。我应该如何正确地传递布尔参数或进行转换?
curl --data "ready=true" http://example.com/users/isReady

1
@Marting有一个很好的答案,因为当您通过http(s)传递参数时,它会作为字符串传递。这只是一个离题的评论:),在Ruby中使用def ready?而不是def isReady - sameera207
1个回答

4

可能是因为参数以字符串形式传递而不是布尔值。

没错。我用通用的 Ruby 方法处理这个问题,具体如下:

class String
  def to_b()
    self.downcase == "true"
  end
end

现在任何字符串都将具有to_b方法。你可以这样写:
def ready?
  if params[:ready].to_b
    do_something
  end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接