2012-07-27 21 views
6

Kullanıcımın profiline pdf ve txt gibi reklamları yüklemesi için kullanıcıma ihtiyacım var. Ve bunu Carrierwave kullanarak yaptım, bu yüzden başlıkları ve URL'leri olan bir belge listesi var.Raylar: Daha önce yüklenen bir doküman nasıl indirilir?

Ancak diğer kullanıcıların bu dosyaları nasıl indirmesini sağlayabilirim? Bir mücevher kullanmak zorunda mıyım yoksa raylara çok yeni olduğumdan beri bilmediğim bir yer var mı?

Teşekkür

DÜZENLEME:

society.rb

class Society < ActiveRecord::Base 
    ... 
    has_many :documents, :dependent => :destroy 
end 

document.rb ben dosyaları indirmek istiyorum görünümde sonra

class Document < ActiveRecord::Base 
    belongs_to :society  
    mount_uploader :url, DocumentUploader  
end 

Ve bu

:

<% @society.documents.each do |doc| %> 
    <%= link_to "Download it", doc.url %> //url is the column name of the saved url 
    <% end %> 
+0

Belki aptal soru: Bahsettiğiniz URL'leri diğer kullanıcılara aktarmaya ne dersiniz? – Romain

+0

Üzgünüz, ne demek istediğini anlamadım =) – Barbared

+1

@ anthonyalberto'nun cevabı. – Romain

cevap

8

Carrierwave kullanmıyorum ama sanırım Paperclip'e benzer.

nedenle Bu, bir 'dosya' carrierwave niteliğine sahip bir model bir kullanıcı örneği nesne var varsayarak bu

link_to 'Download file', user.file.url 

gibi bir şey kullanmak gerekir. Bunu özellik adınızla değiştirin.

+0

Denedim ama çalışmaz, eminim yanlış bir şey yapıyorum. Söyledim dedim, (yukarıdaki düzenlenmiş soruya bakın) – Barbared

+0

Daha sonra 'doc.url.url' öğesini deneyin çünkü özniteliğiniz 'url' ve 'url' yöntemini çağırmanız gerekiyor. Umarım 'url' carrierwave tarafından rezerve edilmez, aksi takdirde, mount_uploader özniteliğinin adını değiştirin –

+0

Ahhh Çok teşekkür ederim çalışıyor! ^^ – Barbared

8

Bunun için send_file yöntemini kullanabilirsiniz. Hangi gibi olabilir:

class MyController 
    def download_file 
    @model = MyModel.find(params[:id]) 
    send_file(@model.file.path, 
      :filename => @model.file.name, 
      :type => @model.file.content_type, 
      :disposition => 'attachment', 
      :url_based_filename => true) 
    end 
end 

Daha fazla örnek için apidock bağlantısını kontrol edin.

+0

Ben Carrierwave gem kullanıyorum ve dosyayı indirdiğinizde, bu dosya adı boşluk içeriyorsa o zaman alt çizgiler haline dönüştürülür. Peki, indirirken dosya altından bu alt çizgi nasıl kaldırılır? –

+1

@huzefa Dosya adı dizgisini çağırmayı deneyin. – NathanTempelman

İlgili konular