У меня есть приложение Rails 3.1, в котором загруженные пользователем изображения хранятся в базе данных. Я использую выделенный путь для обслуживания этих изображений через контроллер Rails. Вот часть моего route.rb:
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 %>
Я бы предпочел не отключать конвейерную обработку ресурсов для всего приложения, а только для этих изображений. Как я могу это сделать (или я просто неправильно подхожу ко всей этой проблеме)?
book[:cover_image]
? - person shingara   schedule 06.03.2012