هل يمكن لشخص ما أخبرني ما هو الخطأ في هذا الرمز ...؟
-
11-09-2019 - |
سؤال
لدي قسم من التعليمات البرمجية في وحدة تحكم يحل محل HTML الموجود مع علامة IMG. رمز على النحو التالي:
render :update do |page|
page.replace_html "chart-div", "<img src=\"#{chart.chart_file}\"/>" #chart.chart_file is a path
end
لأي سبب من الأسباب، استمر في تلقي الخطأ التالي:
ActionController::RoutingError (No route matches "/public/charts/1_WEEKLY_ACTUAL_LINE.jpg" with {:method=>:get}):
لدي رقم فكرة لماذا يفترض أنني أريد أن أتوجه إلى مكان ما. يبدو أنه يجب أن أحصل على "الجمهور" في البداية من أجل إنشاء الملف بشكل صحيح، ومع ذلك، يجب أن أزيل "الجمهور" من أجل عرض الصورة. أي أفكار؟ هل هناك آلية أكثر قياسية تتعامل مع الصور / العناصر التي تم إنشاؤها ديناميكيا؟
أفضل.
ملاحظة: يرجى عدم تحميل الإضافات "تحميل". يتم إنشاء جميع الملفات بواسطة النظام، لا توجد عمليات تحميلات.
المحلول
عند إضافة الملف، تقوم بإضافةه إلى نظام الملفات، حيث يقع في RAILS_ROOT/public/charts/1_WEEKLY_ACTUAL_LINE.jpg
.
عندما تريد عرض الملف، فأنت بحاجة إلى عنوان URL الذي يشير إليه. الملفات المخزنة في public
يتم الوصول إلى الدليل عن طريق مسارهم بالنسبة إلى public
الدليل.
قد تحاول شيئا مثل هذا:
class Chart < ActiveRecord::Base # or whatever the chart class is
def chart_url
chart_file.gsub(%r{^/public}, "")
end
end
أو يمكنك تخزين عنوان URL في قاعدة البيانات، وتفعل:
class Chart < ActiveRecord::Base # or whatever the chart class is
def chart_file
"/public#{chart_url}"
end
end