8

ユーザーのプロファイルに広告pdfやtxtなどのドキュメントをアップロードする必要があります。そして、Carrierwaveを使用してそれを行ったので、タイトルとURLを含むドキュメントのリストがあります。

しかし、どうすれば他のユーザーにそれらのファイルをダウンロードさせることができますか?宝石を使用する必要がありますか、それとも私はレールに非常に慣れていないので、私が知らないネイティブなものがありますか?

ありがとう

編集:

Society.rb

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

document.rb

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

そして、これは私がファイルをダウンロードしたいビューで:

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

3 に答える 3

12

私はCarrierwaveを使用していませんが、Paperclipに似ていると思います。

したがって、このようなものを使用できるはずです

 link_to 'Download file', user.file.url

これは、「ファイル」carrierwave属性を持つモデルからユーザーがインスタンス化したオブジェクトがあることを前提としています。これを属性名に置き換えます。

于 2012-07-27T14:57:37.273 に答える
11

この方法を使用できますsend_file。これは次のようになります。

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

その他の例については、apidockリンクを確認してください。

于 2012-07-27T14:55:10.350 に答える
0

または、アンカータグを付けることができます。

コントローラ内:

@doc = "query to get the document name from your database"
@docpath = request.base_url+"/uploads/"+@doc

あなたの見解では:

<a href="@docpath" download>Download File</a>.
于 2019-08-25T11:15:08.340 に答える