如何将变量从AJAX表单传递到控制器?

我有报告(金额,日期)。 我希望用户使用datepickers选择日期并显示在用户选择的日期之间创建的报告。

所以我需要从AJAX表单传递这些变量。

我添加了AJAX表单。 这是我的_form.html.erb

 "financial_reports", :action => 'report', :remote => true) do%> From  "dd/mm/yy" %> To  "dd/mm/yy"%>  "btn super", :id => "btn "%> 

我有部分,正在显示报告。 |

_financial_report.erb.html

  
Date Amount Currency
Total

我在index.erb.html上渲染了这个部分内容

  

在我的report.js.erb中,我想返回apporpiate报告:

  $('.report').apppend(''); 

这是我的控制器( 我不知道应该在哪里调用“where”条件

  def index @financial_reports = current_user.financial_reports#.where(:created_at => the_start.to_date..the_end.to_date) ... end 

或者在这里

  def report @financial_reports = current_user.financial_reports#.where(:created_at => the_start.to_date..the_end.to_date)//here respond_to do |format| format.js end end 

这是我的报告表单的HTML:

  

在我的路线:

  match 'financial_reports/report' => 'financial_reports#report' 

我可以使用AJAX获取变量:

  $.ajax({ type: 'POST', url: 'financial_reports/report', data: {'start_date' : $("input[name='report[start_date]']").val(), 'end_date' : $("input[name='report[end_date]']").val() }, success: function(data){ //data is whatever you RETURN from your controller. } }); 

我该如何解决这个问题? 也许,我想念AJAX的东西?

PS当我调用报告操作时,它会显示空白页面。

你说你可以从ajax得到回应。 但是你从行动中归还了什么吗? 如果明确触发时ajax请求正常工作,那意味着你的路线没问题。 但是ajax请求应该触发report.js.erb的javascript。 如果没有发生,我怀疑参数格式错误。 我可以看到你在传递的ajax请求:

  data: {'start_date' : $("input[name='report[start_date]']").val(), 'end_date' : $("input[name='report[end_date]']").val() } 

如果操作期望params [:start_date]和params [:end_date],这很好。 但表格并不以该格式发送参数。

我的建议:使用firebug或其他一些调试工具,确保它是一个POST请求,参数应该是预期的格式。 检查请求的响应以查看返回值。 这应该是一个“成功”的回应。 还要检查控制器中的“报告”方法是否为公共方法。

在你的report.js.erb中你有一个拼写错误, apppend应该追加

我不确定你是否还有其他问题,我没有进一步看,因为那已经阻止了它的运作。