列出要下载的文件,添加到Rails链接的额外路径

时间:2012-06-14 13:05:35

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我正在尝试显示目录​​中文本文件的链接列表(在index.html中),以便下载文件。 如果有子目录,我希望它的链接刷新索引页并列出该子目录中的文件(作为下载链接)。

我的file_transfers / index.html.erb有:

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

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

我在config / 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

当我点击目录链接时,它确实刷新了列表及其文件,但是当我将鼠标悬停在路径上时,链接会在路径中显示额外的“输出/”目录,但html中的href attr没有额外的路径。这就像额外文件夹被视为根0.0.0.0:3000的一部分(如在0.0.0.0:3000/outputs中)

1 个答案:

答案 0 :(得分:0)

使用redirect_to :action => :index代替渲染是解决方案