レポートを表示するためのフォームがありますがprint to pdf
、print to excel
、 、および HTML 自体を使用してプレビューを表示する 3 つの機能が必要ですjs
これは、 と のみで両方に有効な最初の条件pdf
ですexcel
。
コントローラ:
respond_to do |format|
if params[:print]
format.html { redirect_to :action => "report", :format => "pdf", :start_period => params[:start_period], :end_period => params[:end_period], :warehouse => params[:warehouse] }
elsif params[:excel]
format.html { redirect_to :action => "report", :format => "xls", :start_period => params[:start_period], :end_period => params[:end_period], :warehouse => params[:warehouse] }
else
format.html
end
end
見る:
<%= form_tag(models_path, :method => "get") do %>
<%= submit_tag "#{t 'pdf'}", :name => "print" %>
<%= submit_tag "#{t 'excel'}", :name => "excel" %>
<% end %>
しかし、プレビュー機能の追加を開始するjs
と、エラーではなく、両方の送信ボタン (pdf n Excel)が js を指しています。
新しいコントローラー
respond_to do |format|
if params[:print]
format.html { redirect_to :action => "report", :format => "pdf", :start_period => params[:start_period], :end_period => params[:end_period], :warehouse => params[:warehouse] }
elsif params[:excel]
format.html { redirect_to :action => "report", :format => "xls", :start_period => params[:start_period], :end_period => params[:end_period], :warehouse => params[:warehouse] }
else
format.html
format.js # NEW LINE
end
end
新しいビュー
<%= form_tag(models_path, :method => "get", :id => "headers_search") do %>
<%= submit_tag "#{t 'ep.submit'}", :name => nil, :remote => true %>
<%= submit_tag "#{t 'pdf'}", :name => "print" %>
<%= submit_tag "#{t 'excel'}", :name => "excel" %>
<%= end %>
headers_search
application.jsを指しています
$.fn.ajaxFilter = function() {
this.submit(function() {
$.get(this.action, $(this).serialize(), null, "script");
return false;
});
}
$("#headers_search").ajaxFilter();
だから、どこで間違えたのか混乱しています..私は一種のレール初心者です。ありがとう