0

我有一个显示报告的表格,但我需要 3 个功能,即print to pdf,print to excel和还通过 html 本身显示预览js

这是仅对pdfandexcel和 and 都适用的第一个条件。

控制器:

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();

所以,我对我做错的地方感到困惑..我有点像rails新手。谢谢

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 回答