Хранилище Paperclip DB: вложения входят, но не выходят - PullRequest
0 голосов
/ 09 февраля 2011
irb(main):001:0> e = Event.last
=> #<Event id: 7, address: "123 Main St", start_date: "2011-02-09", start_time: "2000-01-01 14:49:00", title: "Test Event", poster_file: "\377���JFIF\000\001\002\000\000d\000d\000\000\377�Ducky\000\001\000\004\000\000\0002\000\000\377�!Adobe\000d�...", poster_thumb_file: nil, created_at: "2011-02-09 14:49:45", updated_at: "2011-02-09 14:49:45", poster_file_name: nil, poster_content_type: "image/jpeg", poster_file_size: 134218, poster_updated_at: "2011-02-09 14:49:44">
irb(main):002:0> e.poster.url
=> "/posters/original/missing.png?1297262984"

Я использую вилку драгоценного скрепки от Пэт Шонесси .Я также попытался, и получил ту же проблему с другим найденным форком здесь , так что я почти уверен, что это просто я делаю что-то глупое.Мое приложение размещено на героку.Я следовал инструкциям человека, который первоначально разветвил скрепку и попытался адаптировать их к Rails 3. Мой маршрут для плаката выглядит так:

resources :events do
  member do
    get :poster
  end
end

и в контроллере у меня есть:

class EventsController < ApplicationController       
  downloads_files_for :event, :poster
...
end

и модель:

class Event < ActiveRecord::Base
  attr_accessor :poster_thumb_file, :poster_file_name
  has_attached_file :poster, :storage => :database, :styles => {:thumb => { :geometry => "100x100>", :column => 'poster_thumb_file'}}
end

Я не могу понять, чего мне не хватает, чтобы эти изображения отображались.Любой совет будет оценен!

1 Ответ

0 голосов
/ 09 февраля 2011

попробуйте использовать множественные "плакаты" в вашем файле маршрутов:

resources :events do
  member do
    get :posters
  end
end

В методе downloads_files_for предполагается, что множественное имя вложения в URL-адресе;см .: https://github.com/patshaughnessy/paperclip/blob/master/lib/paperclip/storage/database.rb#L190

Если вы хотите использовать в плакате «постер», а не «постеры», вам придется самостоятельно написать действие контроллера.По сути, это просто Event.find ... и затем вызвать send_data с Event.poster.file_contents и передать также тип и имя файла.

Это исправлено?- пэт

...