كيفية عرض الصورة من المجلد الخاص داخل العرض؟
-
21-12-2019 - |
سؤال
أحتاج إلى نصيحة سريعة حول شيء يبدو بسيطًا حقًا.لدي بعض الصور داخل المجلد الخاص وأرغب في عرضها داخل طريقة العرض الخاصة بي.
الحل الوحيد الذي وجدته هو هذا:
def show
send_file 'some/image/url', :disposition => 'inline', :type => 'image/jpg', :x_sendfile => true
end
لقد قرأت ذلك :disposition => 'inline'
لا ينبغي أن يؤدي إلى تنزيل الصورة والسماح لي بعرضها داخل طريقة العرض الخاصة بي.المشكلة هي أنه في كل مرة أقوم بتشغيل show
الإجراء، يتم تنشيط تنزيل الصورة تلقائيًا ويتم تنزيلها تلقائيًا.عرض ل show
لا يتم عرض الإجراء.
كيف يمكنني عرض تلك الصورة داخل طريقة العرض الخاصة بي؟شكرًا لك.
المحلول
الطريقة التي أفعل بها ذلك، ولا أقول أنها تتوافق تمامًا مع الكتاب، هي أن أقوم بإنشاء جذر للصور وإجراء في وحدة التحكم لعرضها.
لذلك، على سبيل المثال، فيways.rb
match '/images/:image', to: "your_controller#showpic", via: "get", as: :renderpic
في وحدة التحكم الخاصة بك:
def showpic
send_file "some/path/#{params[:image]}.jpg", :disposition => 'inline',
:type => 'image/jpg', :x_sendfile => true # .jpg will pass as format
end
def show
end
وفي نظرك
<img src="<%= renderpic_path(your image) %>">
فيما يلي مثال عملي، مع معلمات أقل في "send_file"
def showpic
photopath = "images/users/#{params[:image]}.jpg"
send_file "#{photopath}", :disposition => 'inline'
end
نصائح أخرى
أعتقد أن المشكلة هي type
.من الوثائق:
:type - specifies an HTTP content type
لذلك يجب أن يكون نوع محتوى HTTP المناسب image/jpeg
بدلاً من image/jpg
, ، كما يمكنك انظر هنا.محاولة مع:
:type => 'image/jpeg'
يمكنك أيضًا سرد جميع أنواع الترميز المتاحة Mime::EXTENSION_LOOKUP
في وحدة تحكم القضبان.
مثال:
مراقب
class ImagesController < ApplicationController
def show_image
image_path = File.join(Rails.root, params[:path]) # or similar
send_file image_path, disposition: 'inline', type: 'image/jpeg', x_sendfile: true
end
end
الطرق
get '/image/:path', to: 'images#show_image', as: :image
الآراء
image_tag image_path('path_to_image')
ستحتاج إلى جعل العرض يستخدم image_tag لعرضه في العرض.
تم طرح سؤال مماثل هنا: عرض الصور ذات الموجة الحاملة في Rails 3.1 في مجلد متجر خاص