ファイルをダウンロードするために、ディレクトリ内のテキスト ファイルへのリンク (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
ディレクトリリンクをクリックすると、実際にリストがそのファイルで更新されますが、リンクにカーソルを合わせるとパスに余分な「output/」ディレクトリが表示されますが、html の href 属性には余分なパスがありません。余分なフォルダーがルート 0.0.0.0:3000 の一部と見なされるようなものです (0.0.0.0:3000/outputs のように)