我正在尝试显示目录中文本文件的链接列表(在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中)
答案 0 :(得分:0)
使用redirect_to :action => :index
代替渲染是解决方案