このファイルをレンダリングせずにクライアントにファイル (PDF、CSV など) を送信するにはどうすればよいですか?
たとえば、Students コントローラー (scaffold を使用して作成) を想像してみてください。「新しい」フォームと「作成」アクションがあります。
def new
@student = Student.new
respond_to do |format|
format.html # new.html.erb
end
end
def create
@student = Student.new(params[:student])
respond_to do |format|
if @student.save
flash[:notice] = 'Student created'
format.html { redirect_to(@student) }
else
format.html { render :action => "new" }
end
end
end
生徒が正常に作成されると、'show' テンプレートにリダイレクトされます。それは大丈夫です!しかし、たとえばクライアントに PDF ファイルを送信してから、「表示」アクションをレンダリングする必要があります。
この PDF ファイルは、クライアントの作成レシートのようなものです。
追加情報: Prawn を使用して PDF を作成し、次のようなコードでクライアントに送信します。
respond_to do |format|
format.pdf { render :layout => false }
end
簡単に言えば、記入済みのフォームを取得し、生徒を作成し、PDF をブラウザーに (作成の領収書として) 送信し、'show' アクションをレンダリングして作成した生徒を表示する必要があります。
どうもありがとうございました。