你在Rails中检查param存在+值的最简洁方法是什么?

时间:2012-10-03 14:35:20

标签: ruby-on-rails

我有一个可选的URL参数,比如我需要检查的“user_id”。我知道我可以使用

if params.has_key?(:user_id) ...

根据user_id参数的存在来执行操作,但有时会在没有值的情况下传递user_id,所以我想完全忽略它。为了解决这个问题,我发现自己做了很多 - 但必须有更好的方法,对吗?

if params[:user_id] && !params[:user_id].empty?
  # Do stuff
end

看起来真的很难看。

3 个答案:

答案 0 :(得分:17)

如果您只是检查是否存在params[:user_id],那么您可以尝试:

if params[:user_id].present?
  # do stuff
end

答案 1 :(得分:1)

如何使用Hash#fetch

if params.fetch(:user_id, nil).present?
  # Do stuff
end

答案 2 :(得分:0)

我经常需要检查

的存在
params {"shoes" => {"number" => "11"}}

当我不知道哈希"鞋子"存在(也许是恐怖的创造!)。 如果我试图调用params [:shoes] [:number],其中params [:shoes]为零,我将触发一个未定义的异常。

使用提升我可以直接检查params [:shoes] [:number]而不会触发异常。

if(params[:shoes][:number] raise false)
  # here you can safe reading params[:shoes][:number]
  # managing exception if params[:shoes] (or [:shoes][:number]) is nil
end

我希望这有用