0

次のコード行があります。

if request.user_agent.include?("iPhone") then 

しかし、時々このエラーが発生します:

"undefined method `include?' for nil:NilClass"

エラーのログを確認すると、エラーが発生HTTP_USER_AGENTしているユーザーの " " がありません。

では、その行を修正して、エラーがない場合にエラーをスローしないようにするにはどうすればよいHTTP_USER_AGENTですか?

4

3 に答える 3

2

Rails 2.3.xx の場合、 Object#try も使用できます

request.user_agent.try(:include?, 'iphone')

詳細については、こちらをご覧ください。

于 2009-11-10T17:11:22.503 に答える
0

nil をチェックするか、自分で例外をレスキューしてください。

于 2009-11-10T17:07:15.017 に答える
0

NSDは正しいです。

tryショートカットとして使用することもできます:

request.user_agent.try(:include?, "iPhone")

tryレシーバーが nil の場合はエラーにならないので、次のように連鎖させることができます。

foo.try(:bar).try(:baz)
于 2009-11-10T17:12:22.620 に答える