Railsでこれを行うことが可能かどうか疑問に思っています:
ウェブページにリンクを張ってください。ユーザーがリンクをクリックすると、コントローラーが動的にファイル (たとえば、1 から 10 までの乱数を 1 つ含むテキスト ファイル) を生成し、そのファイルがユーザーのコンピューターにダウンロードされます。ファイルは一時的にサーバーに保存される場合がありますが、永続的に存在するべきではありません。
Railsでこれを行うことが可能かどうか疑問に思っています:
ウェブページにリンクを張ってください。ユーザーがリンクをクリックすると、コントローラーが動的にファイル (たとえば、1 から 10 までの乱数を 1 つ含むテキスト ファイル) を生成し、そのファイルがユーザーのコンピューターにダウンロードされます。ファイルは一時的にサーバーに保存される場合がありますが、永続的に存在するべきではありません。
send_data
コントローラーで使用します。
send_data("4", :filename => "my_awesome_file")
サーバーに既にファイルがある場合は、send_file
代わりに使用できます
send_file(filepath, :filename => "my_awesome_file")
http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data
はい、可能です。これは、私のアプリの 1 つにあるものです。
class DownloadsController < ApplicationController
def download
# ...
send_file CSVConstructor::Constructor.new(...).to_zip
end
end
このdownload
アクションは、フォームから送信されたパラメーターを受け取り、いくつかのファイルを生成して zip としてパッケージ化し、ファイル パスを返すカスタム クラスにそれらを送信します。独自のアプリ用にファイルを生成する最善の方法を見つける必要がありますが、同様の方法をお勧めします。機能を別のクラスに分岐すると、コントローラーを軽量に保つことができます。