如何通过从jQuery的数据到控制器?(How to pass data from jQuery t

2019-07-30 19:38发布

I have two fields - end and start date(daterange) and I should pass them into controller and reload this page.

Here is my code from view:

    <%= 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%>

and generated HTML() :

  <form accept-charset="UTF-8" action="/financial_reports?method=post" method="post"...>
  <input id="report_start_date" name="report[start_date]" size="30" type="text" class="hasDatepicker"><script type="text/javascript">
<input id="report_end_date" name="report[end_date]" size="30" type="text" class="hasDatepicker"
    <input class="btn wide" id="btn-report" name="commit" type="submit" value="Run Report">
  </form>

Can I get datepicker value like this :

      $('#datepicker').datepicker({
    onSelect: function(dateText, inst) {
  $("input[name='report[start_date]']").val(dateText);
    }
});

and I need to pass them into controller and reload this page, because in this page controller.

HERE I NEED TO PASS JQUERY VALUE

    @financial_reports = current_user.financial_reports.where(:created_at => start_date.to_date..end_date.to_date)

or I should add another action or method ? What you can suggest ?

Answer 1:

在我看来,使用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]

现在,你已经得到了你的控制器中的数据,您可以将方法吧。 然后,当你准备好将数据发送回来, return, print, whatever你做将数据发送到该页面。

此外,回报率在默认情况下(访问控制时)预计输出模板的观点,因为我们只是想更新数据,你需要使用类似停止该默认操作 - >

render :layout => false

我希望这可以帮到你。 我真的不是一个回报率的专家,但是这是我在我几次涉足使用的方法。

祝好运!



Answer 2:

Rails 3中现在有助手做的正是你想要的。 这些被称为远程表单和链接。

本博客文章做了解释他们做什么,他们是如何工作的一个伟大的工作。



文章来源: How to pass data from jQuery to controller?