Передача параметров JS в контроллер при использовании button_to

#javascript #ruby-on-rails #ruby-on-rails-4 #datepicker #erb

#javascript #ruby-on-rails #ruby-on-rails-4 #выбор даты #ошибка

Вопрос:

Возможно, нет способа достичь этого без формы, но мне интересно. Я вызываю метод 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):

 <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 при нажатии кнопки? В противном случае я мог бы использовать форму.
Любой ввод приветствуется.

Комментарии:

1.я думаю, вам нужно добавить правильное действие с remote:true опцией внутри button_to apidock.com/rails/ActionView/Helpers/UrlHelper/button_to

Ответ №1:

Erb — это механизм создания шаблонов на стороне сервера, поэтому код выполняется на стороне сервера, тогда как JS-код находится на стороне клиента, поэтому, к сожалению, прямого пути нет. Но что мы можем сделать, так это создать другую форму для дат с параметром remote, установленным в true (RAILS AJAX FORM), поэтому после ее отправки мы можем загрузить button_to в view, и теперь у нас будут значения в параметрах. Должно сработать, я думаю.