当使用button_to时,传递JS参数给控制器

Pass JS params to controller when using button_to

本文关键字:JS 传递 参数 控制器 button to      更新时间:2023-09-26

也许没有表单就没有办法实现这一点,但我想知道。我通过在我的应用程序的管理部分按下一个按钮来调用download_pdf方法。这里是工作代码:

<%= button_to t('.download_pdf', :default => "Download PDF BTC Statement"), download_pdf_admin_user_path(@user), 
                                 :action  => :download_pdf, 
                                 :class   => "btn btn-success btn-xs" %>

现在,让我们承认我希望允许站点的管理员选择start_date和end_date,以便将这些参数传递给controller#method,以便为该日期范围生成报告。我尝试了以下,但我不知道如何传递这些(start_date/end_date)变量到控制器。下面是不工作的代码(参见button_to参数中的CAPS):

<input type="text" placeholder="start date" id="start_date" class='datepicker'>
<input type="text" placeholder="end date" id="end_date" class='datepicker'>
<script type="text/javascript">
  $(document).ready(function(){
    $('#start_date').datepicker();
    $('#end_date').datepicker();
    START_PLZ = $('#start_date').datepicker().val();
    END_PLZ = $('#end_date').datepicker().val();
  });
</script>
<%= button_to t('.download_pdf', :default => "Download PDF BTC Statement"), download_pdf_admin_user_path(@user), 
                                 :action  => :download_pdf, 
                                 :params  => { start_date: START_PLZ, end_date: END_PLZ },
                                 :class   => "btn btn-success btn-xs" %>

是否有任何方法我可以使用这些JS变量,并传递给我的generate_pdf方法,当我按下按钮?否则我可能会用一个表格。

Erb是服务器端模板引擎,所以代码在服务器端执行,而JS代码在客户端,所以不幸的是没有直接的方法。 我们所能做的是创建另一个表单,将remote选项设置为true (RAILS AJAX form),这样一旦提交,我们就可以将button_to加载到视图中,现在我们将在params中拥有值。我想应该有用。