在Ruby on Rails中传递布尔参数

Art*_*uro 3 ruby curl boolean ruby-on-rails

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

  def isReady
     if (params[:ready] == true)
            doSomething()
     end
  end
Run Code Online (Sandbox Code Playgroud)

但是,通过下面的示例,我们永远不会进入这个if(但它进入函数),可能是因为参数是作为字符串而不是作为布尔值传递的.如何正确传递布尔参数或转换它们?

curl --data "ready=true" http://example.com/users/isReady
Run Code Online (Sandbox Code Playgroud)

Mar*_*cny 5

可能是因为参数是作为字符串而不是布尔值传递的.

正确.我以通用 Ruby方式处理它的方式如下:

class String
  def to_b()
    self.downcase == "true"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在任何字符串都有to_b方法.你可以写

def ready?
  if params[:ready].to_b
    do_something
  end
end
Run Code Online (Sandbox Code Playgroud)