开发者

How to Create Download Link

What's the best way to create a download link? Is there a bet开发者_C百科ter way than the following?

I was thinking of using link_to "Download", :controller => ..., :action => ...", :id => ... in the view.

Adding match /documents/download/:id => documents#download to routes.rb

And in the controller:

def download
  send_file ...
end 

Also, I'd like, if possible, for the user to remain on the same page as the link.

Thanks.


I add the download action as a restful route in a resources block. Here's typical code for me:

routes.rb

  resources :things do
    member do
      get :download
    end
  end    

model:

  has_attached_file :document,
    :path => ':rails_root/assets/documents/:id/:basename.:extension'
  attr_protected :document_file_name, :document_content_type, :document_file_size

controller:

  def download
    send_file @thing.document.path, :type => 'application/pdf', :filename => @thing.permalink
  end

view:

  <%= link_to 'Download', download_thing_path(@thing) %>

This keeps the user on the same page, and just initiates the download with my suggested name (I use permalink).

What do you mean by dynamically generated? Are they uploaded by you or created by your application on the fly?


You could just have your download logic in your show action and give it:

<%= link_to "Download", document_path(document) %>

I'm pretty sure that the :controller / :action / :id method of linking is frowned upon.


I've just created a Download .mp3 link and used in my .htaccess file.

<Files *.mp3>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>

I found this to be easier than any other solution.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜