0

レポートを表示するためのフォームがありますがprint to pdfprint 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_searchapplication.jsを指しています

$.fn.ajaxFilter = function() {
  this.submit(function() {
    $.get(this.action, $(this).serialize(), null, "script");
  return false;
  });
}

$("#headers_search").ajaxFilter();

だから、どこで間違えたのか混乱しています..私は一種のレール初心者です。ありがとう

4

2 に答える 2

1

試してみてください

if params[:name] == "print"
于 2013-04-05T10:01:04.873 に答える
0

jqueryseralize()メソッドは送信ボタンをシリアル化しません。Jquery-Serializeのドキュメントを参照してください。これは、jquery を介してフォームを送信すると、送信ボタンが含まれないことを意味します。

コードが機能するためにクリックされたボタンを含めるには、jquery 送信を編集する必要があります。

「 jQuery: フォーム送信時にどのボタンがクリックされたかを取得する方法」の質問への回答を参照してください。どのボタンが押されたかを判断する方法。

于 2013-04-05T10:01:46.720 に答える