Получение “неопределенный метод `include?'” для request.user_agent

StackOverflow https://stackoverflow.com/questions/1709509

Вопрос

У меня есть эта строка кода:

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

Но я иногда получаю эту ошибку:

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

При проверке журналов об ошибке нет "HTTP_USER_AGENT" для пользователя, который получает сообщение об ошибке.

Итак, как я могу исправить эту строку, чтобы она не выдавала ошибку, если нет HTTP_USER_AGENT?

Это было полезно?

Решение

Для Rails 2.3.xx вы также можете использовать Object#try

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

Проверить здесь для получения дополнительной информации.

Другие советы

Проверьте его на нулевое значение или спасите исключение самостоятельно.

НРД прав.

Вы также могли бы использовать try как короткий путь:

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

try не будет выдавать ошибку, когда его приемник равен нулю, так что вы можете связать их вместе, вот так:

foo.try(:bar).try(:baz)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top