如何将变量从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应该追加
我不确定你是否还有其他问题,我没有进一步看,因为那已经阻止了它的运作。