У меня есть приложение Rails 3.1, в котором загруженные пользователем изображения хранятся в базе данных. Я использую выделенный путь для обслуживания этих изображений через контроллер Rails. Вот часть моих маршрутов.
get "images/book_covers/:book_id", :controller => :book_covers, :action => :show
get "assets/book_covers/:book_id", :controller => :book_covers, :action => :show
Вот код с контроллера:
class BookCoversController < ApplicationController
def show
if @image = BookCover.find_by_book_id(params[:book_id])
send_data(@image.image, :type => @image.content_type, :filename => "book_cover_#{@image.book_id}", :disposition => 'inline')
else
render :file => "#{RAILS_ROOT}/public/404.html", :status => 404
end
end
end
Все это прекрасно работает в режиме разработки (поскольку конвейеризация ресурсов отключена), но когда я пробую приложение в работе, я получаю (как и следовало ожидать) ошибку: «ActionView :: Template :: Error (book_covers / 61) не скомпилировано) ". Вот код, который отображает изображение:
<%= image_tag book[:cover_image], :class => book[:cover_source].downcase %>
Я бы предпочел не отключать конвейеризацию ресурсов для всего приложения, только для этих изображений. Как я могу это сделать (или я просто неправильно подхожу к этой проблеме)?