如何将数据从jQuery传递给控制器?
我有两个字段 – 结束日期和开始日期(日期范围),我应该将它们传递给控制器并重新加载此页面。
这是我的代码:
"financial_reports", :action => 'index', :method => 'post') do%>//maybe this line should be edited "dd/mm/yy" %> "dd/mm/yy"%>
并生成HTML():
我可以像这样得到datepicker值:
$('#datepicker').datepicker({ onSelect: function(dateText, inst) { $("input[name='report[start_date]']").val(dateText); } });
我需要将它们传递给控制器并重新加载此页面,因为在此页面控制器中。
在这里,我需要通过法器价值
@financial_reports = current_user.financial_reports.where(:created_at => start_date.to_date..end_date.to_date)
或者我应该添加另一个动作或方法? 你能建议什么?
在我看来,使用AJAX而不是重新加载页面是最好的选择。 您只是尝试更新某些数据,并且没有理由执行完整页面刷新来执行此操作。 我不是RoR爱好者,但似乎我们可以通过 – >将数据发送到控制器
$.ajax({ type: 'POST', url: 'path/to/controller', 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. //an array, string, object...something } });`
在你的RoR控制器中,你可以通过做…
var the_start = params[:start_date], the_end = params[:end_date]
现在您已经获得了控制器中的数据,您可以将该方法应用于它。 然后,当您准备好发送数据时, return, print, whatever
您做什么来将数据发送到页面。
此外,默认情况下(访问控制器时)RoR需要向视图输出模板,因为我们只想更新数据,您需要使用类似的方法停止该默认操作 – >
render :layout => false
我希望这可以帮到你。 我真的不是一个RoR专家,但这是我在几次涉猎时使用的方法。
祝好运!
Rails 3现在有助手可以完全按照你的意愿行事。 这些被称为远程表单和链接。
这篇博客文章很好地解释了他们做了什么以及他们如何工作。