2012-06-14 104 views
0

我想顯示鏈接列表(在index.html)目錄中的文本文件,下載文件。 如果有子目錄,我希望它的鏈接刷新索引頁並列出該子目錄中的文件(作爲下載鏈接)。列表文件的下載,額外的路徑添加到鏈接的鏈接

我file_transfers/index.html.erb有:

<%- output_dir ||= 'outputs/' %> 

<%- Dir.foreach(output_dir) do |f| %> 
    <%= link_to f, output_dir + f %> 
<%- end %> 

我在配置最後的路線/ routes.rb文件是:

match ':file_dir/:file_name' => 'file_transfers#show' 

控制器:

def show 
    file = params[:file_dir] + '/' + params[:file_name] 
    file += ".#{params[:format]}" if params[:format] 
    if File.directory?(file) 
     render :index, :locals => {:output_dir => file + '/'} 
    else 
     send_file params[:file_dir] + '/' + params[:file_name], :type => "text/csv" 
     render :index 
    end 
    end 

當我點擊一個目錄鏈接,它確實會用它的文件刷新列表,但當我連接時,鏈接會顯示一個額外的'output /'目錄在他們身上,但在html中的href attr沒有額外的路徑。這就像額外的文件夾被認爲是根0.0.0.0:3000的一部分(如在0.0.0.0:3000/outputs)

+1

確保您瞭解風險:http://guides.rubyonrails.org/security.html#file-downloads請參閱第4.4節。 – jdoe

+0

指出,謝謝你 – rigyt

回答

0

使用redirect_to :action => :index,而不是渲染是解決