الحصول على "طريقة غير محددة` تضمين؟ "" للطلب.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?

هل كانت مفيدة؟

المحلول

للقضبان 2.3.xx يمكنك أيضا استخدام كائن # حاول

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

الشيك هنا لمزيد من المعلومات.

نصائح أخرى

التحقق من ذلك لنيل أو إنقاذ الاستثناء بنفسك.

NSD صحيح.

يمكنك أيضا استخدام try كقص قصير:

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

try لن يحدث خطأ عندما يكون جهاز الاستقبال الخاص به لا شيء، حتى تتمكن من سلسلة منها معا، مثل هذا:

foo.try(:bar).try(:baz)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top