2011-02-09 4 views
0
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" 

J'utilise une fourchette de la gemme de Pat Shaughnessy paperclip. J'ai également essayé, et ai obtenu le même problème avec une autre fourchette trouvée here, donc je suis assez sûr que c'est juste moi faisant quelque chose de stupide. Mon application est hébergée sur heroku. J'ai suivi the instructions de la personne qui l'origine et fourchue paperclip essayé de les adapter à Rails 3. Mon itinéraire pour l'affiche ressemble à ceci:stockage Paperclip DB: Pièces jointes aller, mais ne viennent pas

resources :events do 
    member do 
    get :poster 
    end 
end 

et dans le contrôleur je:

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

et le modèle:

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 

Je n'arrive pas à comprendre ce qui me manque pour obtenir ces images à afficher. Tout avis sera le bienvenu!

Répondre

0

essayer pluriel « affiches » dans votre fichier itinéraires:

resources :events do 
    member do 
    get :posters 
    end 
end 

La méthode downloads_files_for prend le nom de l'attachement au pluriel dans l'URL; voir: https://github.com/patshaughnessy/paperclip/blob/master/lib/paperclip/storage/database.rb#L190

Si vous souhaitez utiliser "poster" et non "affiches" dans l'URL, vous devrez écrire manuellement l'action du contrôleur. Fondamentalement, c'est juste Event.find ... puis appelez send_data avec Event.poster.file_contents et passez le type et le nom de fichier aussi.

Cela a-t-il été corrigé? - pat

+0

Merci de répondre à Pat. Pour une raison quelconque, il ne fonctionne toujours pas. Je peux les voir là dans la DB. Si proche pourtant si loin ... – mikewilliamson

+0

Avec l'itinéraire que vous suggérez je devrais pouvoir voir l'affiche à l'URL/events/posters/8? Style = original droit? Je reçois: Aucune correspondance d'itinéraire "/ events/posters/8" – mikewilliamson

+0

Non - ce serait/events/8/affiches? Style = original et le style serait original par défaut. Vous pouvez lancer des "rake routes" et voir quels sont les modèles d'itinéraires ... – pat

Questions connexes