سؤال

أحتاج إلى نصيحة سريعة حول شيء يبدو بسيطًا حقًا.لدي بعض الصور داخل المجلد الخاص وأرغب في عرضها داخل طريقة العرض الخاصة بي.

الحل الوحيد الذي وجدته هو هذا:

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 في مجلد متجر خاص

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top