سؤال

لدي قسم من التعليمات البرمجية في وحدة تحكم يحل محل 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top