条件の集合を取り、その条件を使用してクエリを実行するフォームを設定しようとしています。フォームの下のブラウザウィンドウ(js経由)またはpdf(Prawnを使用)を新しいウィンドウで開きます。Rails 5 - レンダリングフォームの提出結果がjsなどの形式(PDFなど)
index.html.erb(フォーム):
<%= form_for :criteria, url: results_path, method: :patch, remote: true do |f| %>
...input fields...
<%= button_tag("View", remote: true, value: 'js', name: 'format' %>
<%= button_tag("PDF", remote: true, value: 'pdf', name: 'format', formtarget: '_blank') %>
<div id='report-results'>
</div>
<% end %>
コントローラ:
def index
end
def results
@results = ...the query...
respond_to do |format|
format.js
format.pdf do
report = ResultsPdf.new(@results)
send_data report.render, filename: "Results_#{Date.today}.pdf", type: 'application/pdf', disposition: "inline"
end
end
end
results.js.erb:このコードで
$('div#report-results').empty();
$('div#report-results').html("<%= escape_javascript(render 'report_results') %>");
、表示オプションブラウザで結果をレンダリングしますが、PDFオプションは何もしないように見えます。サーバーはコントローラにPDFとして表示され、クエリを実行し、データを送信するが、pdf自体は生成されないことを示しています。フォーム宣言からremote: true
を削除すると、PDFオプションは機能しますが、[表示]オプションを選択するとブラウザのresults.js.erbのテキストがレンダリングされます。
ブラウザにpdfデータがありますか? – Pavan
@Pavan Nope。サーバーでは、コントローラアクションをPDFとして処理し、指定された条件でクエリを実行し、「送信データResults_08/23/2017.pdf」を送信しますが、ブラウザは何もしません。 – CChandler81
@ CChandler81これは試しましたか? https://stackoverflow.com/a/7293155/1154044 – cnnr