TypeError (لا يمكن تحويل nil إلى سلسلة) مع مرفق_FU
-
18-09-2019 - |
سؤال
أنا مناولة مرفقات الملفات في تطبيق القضبان الخاص بي مع Attactment_fu، والتي توفر public_filename
طريقة لاسترداد عنوان URL الخاص بالملف. أنا أستخدمه على نموذج يسمى الغلاف، لذلك إذا أردت استدعاء عنوان URL لصورة الغلاف المحملة، في طريقة عرض سأفعل:
<%= image_tag(@cover.public_filename) %>
يعمل هذا على ما يرام عندما يكون لدى المستخدم المرفق المناسب، ولكن في طلبي ليس شرطا للمستخدم لتحميل مرفق.
لذلك، دعوة @cover.public_filename
سوف رمي TypeEror: لا يمكن تحويل nil إلى سلسلة للسبب الواضح أن الملف لا شيء.
ومع ذلك، أواجه مشكلة في إضافة المنطق إلى هذه المشكلة بشكل فعال لأن الكائن هو NIL، وكل محاولاتي بعمل أشياء مثل unless @cover.public_filename.nil?
أو if @cover.public_filename == nil
كانت غير مثمرة وتسبب نفس الخطأ من النوع.
ماذا ينقصني؟
نصائح أخرى
<%= image_tag(@cover.public_filename) unless @cover.nil? %>
آسف، لا يمكن التعليق، حتى هنا تحديث في حين أن:
@cover.public_filename?
لن تعمل هنا بسبب @cover
هو nil
كائن وبالتالي لا يوجد لديه public_filename?
طريقة.
nil.respond_to?('public_filename?') #=> false
محدث:
أصنعها:
<%= image_tag(@cover.public_filename) if @cover && @cover.public_filename? %>