2010-12-03 8 views
1

je donne les résultats suivants:Rails en utilisant un chemin imbriqué

<% = project_attachment_path (attachment.project, pièce jointe)%>

Ce sorties: /projects/70/attachments/25

<% = attachment.download_url%>

Ce sorties: /attachments/25/original.jpg?1291407855

Ce que je veux est: /projects/70/attachments/25?original.jpg?1291407855

J'ai essayé ceci: <%= project_attachment_path(attachment.project, attachment.download_url) %>

Mais que des erreurs? est-il un moyen de faire ce qui précède?

Merci

ACTUALISATION avec la méthode DOWNLOAD_URL

class Attachment < ActiveRecord::Base 
    def download_url(style = nil, include_updated_timestamp = true) 
    url = Paperclip::Interpolations.interpolate('/:class/:id/:style.:extension', attachment, style || attachment.default_style) 
    include_updated_timestamp && attachment.updated_at ? [url, attachment.updated_at].compact.join(url.include?("?") ? "&" : "?") : url 
    end 

ROUTES:

resources :projects do 
# Download Attachment 
get "attachments/:id/:style.:format" => "attachments#download", :as => :attachment 
end 

resources :attachments do 
collection do 
    get 'download', :as => :download 
end 
end 

Routes Rake:

project_attachment GET /projects/:project_id/attachments/:id/:style.:format   {:action=>"download", :controller=>"attachments"} 
+0

Pas assez de détails pour aller ici. Download_url est-il une méthode que vous avez définie dans votre modèle ou utilisez-vous un plugin? Le problème semble être vos routes, tout ce que 'download_url' déclenche ne réalise pas que les pièces jointes sont imbriquées. Peut-être que si vous le décrire plus nous pouvons vous aider :) – Andrew

+0

@Andrew, désolé à ce sujet. Je suis en train de mettre à jour avec la méthode download_url maintenant .. Merci pour votre aide. – AnApprentice

+0

Est-ce que cela vous donne tout ce dont vous avez besoin? – AnApprentice

Répondre

1

Ok: lorsque vous utilisez cette ... url = Paperclip :: Interpolations.interpolate ('/: class /: id /: le style .: extension ', attachement, style || attachment.default_style)

La partie '/:class/:id/:style.:extension' est ce qui la création de votre URL erronée: /attachments/25/original.jpg?1291407855

Je ne sais pas exactement la meilleure façon d'obtenir les « projets/project_id «une partie dans votre URL, mais vous devez faire quelque chose comme ceci:

class Attachment < ActiveRecord::Base 
    def download_url(style = nil, include_updated_timestamp = true) 

    project_id = self.project.id.to_s 

    attachment_url = Paperclip::Interpolations.interpolate('/:class/:id/:style.:extension', attachment, style || attachment.default_style) 
    include_updated_timestamp && attachment.updated_at ? [url, attachment.updated_at].compact.join(url.include?("?") ? "&" : "?") : url 

    url = 'projects/' + project_id + attachment_url 
    end 

Il peut y avoir un moyen de faire plus élégant, mais je pense que cela devrait vous mettre sur la bonne voie. J'espère que cela aide!

-1

Vous pouvez vérifier tous les chemins disponibles via:

rake routes 
+0

Merci, mais je pense que c'est plus lié à l'utilisation d'une méthode de la route. – AnApprentice

Questions connexes