Получить AJAX значение флажка в Rails-UJS - PullRequest
0 голосов
/ 27 февраля 2020

Когда я пытаюсь установить флажок AJAX, я не получаю значение, переданное в качестве параметра, если флажок не установлен. Я знаю, что в обычных формах Rails добавляет скрытое поле с тем же именем и значением 0 для флажков, но здесь это не работает, потому что сериализуется только один вход, а не вся форма.

<input type="checkbox" name="task[1]" id="task_1" value="1" data-url="/tasks/update" data-remote="true" data-method="patch">

Я использую Rails-U JS, как описано: https://guides.rubyonrails.org/v5.2/working_with_javascript_in_rails.html#data -url-and-data-params

Я также нашел это в JQuery -U JS: https://github.com/rails/jquery-ujs/wiki/Unobtrusive-scripting-support-for-jQuery-%28list-of-data-attributes%29#data -url

Эта проблема обсуждается , и @yourivdlans предложил запрос на выборку с решением, но все еще не принят более года спустя

Файл журнала может выглядеть следующим образом:

Включение флажка:

Started POST "/tasks/1" for ::1 at 2020-02-27 15:55:37 +0000
Processing by TestController#test as JS
  Parameters: {"task"=>"1", "id"=>"1"}

Включение флажка:

Started POST "/tasks/1" for ::1 at 2020-02-27 15:55:52 +0000
Processing by TestController#test as JS
  Parameters: {"id"=>"1"}

1 Ответ

0 голосов
/ 27 февраля 2020

Я бы просто создал форму и обработчик событий, который отправляет форму при изменении ввода:

<% form_for task, remote: true do |f | %>
  <%= f.check_box :completed, class: 'submit-on-change' %>
<% end %>
// put this in the assets pipeline / webpacker
document.addEventListener('change', function(e){
  if (e.target.matches('.submit-on-change') && e.target.form){
    e.target.form.submit();
  }
});

Это намного менее грязно, чем пытаться получить Rails-U JS для обработки ошибок, связанных с флажками .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...