Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据从jQuery传递到控制器?_Jquery_Ruby On Rails_View_Controller - Fatal编程技术网

如何将数据从jQuery传递到控制器?

如何将数据从jQuery传递到控制器?,jquery,ruby-on-rails,view,controller,Jquery,Ruby On Rails,View,Controller,我有两个字段-结束和开始日期(daterange),我应该将它们传递到控制器并重新加载此页面。 以下是我在视图中的代码: <%= form_tag(:controller => "financial_reports", :action => 'index', :method => 'post') do%>//maybe this line should be edited <%= datepicker_input "report","start_

我有两个字段-结束和开始日期(daterange),我应该将它们传递到控制器并重新加载此页面。 以下是我在视图中的代码:

    <%= form_tag(:controller => "financial_reports", :action => 'index', :method => 'post') do%>//maybe this line should be edited
   <%= datepicker_input "report","start_date", :dateFormat => "dd/mm/yy" %>
  <%= datepicker_input "report", "end_date", :dateFormat => "dd/mm/yy"%>
  <%end%>
我需要将它们传递到控制器并重新加载这个页面,因为在这个页面控制器中。 这里我需要传递JQUERY值


或者我应该添加另一个操作或方法?你有什么建议?

在我看来,使用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,以及您为将数据发送到页面所做的任何操作

此外,RoR在默认情况下(访问控制器时)希望向视图输出模板,因为我们只想更新数据,所以您需要使用类似->

render :layout => false
我希望这是有帮助的。我真的不是RoR专家,但这是我在几次涉猎中使用的方法


祝你好运

Rails 3现在有助手可以完全按照您的要求执行操作。这些被称为远程表单和链接


在解释他们做什么以及如何工作方面做得很好

你在这里遗漏了什么?您只是想在表单提交之前将数据传递给控制器吗?是的。我应该重新加载页面以将数据传递给控制器吗?您可以使用AJAX将数据传递给控制器,这样控制器就不必离开页面。或者,您可以使用AJAX传递数据,然后在尝试更新页面上的某些数据时,在success函数中重新加载页面。这取决于你,真的。您知道如何使用AJAX将数据传递给控制器吗?不,我不熟悉。也许我可以重新加载页面并传递数据?什么会更好?
$.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 
  } 
});`  
var the_start = params[:start_date],
    the_end = params[:end_date]
render :layout => false