Как отобразить изображение из личной папки в режиме просмотра?

StackOverflow https://stackoverflow.com//questions/22056228

Вопрос

Мне нужен краткий совет по кое-чему, что кажется действительно простым.У меня есть несколько фотографий в личной папке, и я хотел бы отобразить их в моем представлении.

Единственное решение, которое я нашел, было таким:

def show
    send_file 'some/image/url', :disposition => 'inline', :type => 'image/jpg', :x_sendfile => true
end

Я это читал :disposition => 'inline' не должно вызывать загрузку изображения и позволять мне отображать его в моем представлении.Проблема в том, что каждый раз, когда я запускаю show действие, загрузка изображения автоматически активируется, и оно автоматически загружается.Просмотр для show действие не отображается.

Как я могу отобразить это изображение в моем представлении?Спасибо.

Это было полезно?

Решение

То, как я это делаю, и я не говорю о том, что он идеально в книге, я делаю рут для изображений и действий в контроллере, чтобы сделать его.

Так, например, в маршрутах .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 в консоль rails.

Пример:

Контроллер

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')

Вам нужно будет иметь представление, используйте изображение_tag, чтобы отобразить на вид.

Подобный вопрос был поднят здесь: Показаны изображения с операторной волной в рельсах 3.1 в папке частного магазина

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top