Запретить form_with генерировать параметр и отправлять его (сам по себе)?

#ruby-on-rails #ruby-on-rails-6 #form-with

#ruby-on-rails #ruby-on-rails-6 #form-with

Вопрос:

Когда a form_with отправляет, он отправляет все требуемые параметры, а также параметр с именем «booking», и я совершенно не представляю, откуда взялся этот параметр. Он не содержится ни в представлении, ни в контроллере. Кажется form_with , он генерирует его откуда-то, но я понятия не имею, как / почему?

Я мог бы разрешить его в качестве permit параметра ted, чтобы предотвратить Unpermitted parameter: :booking ошибку, и просто игнорировать его, но я бы предпочел знать, что происходит, и удалить посторонний параметр.

Почему form_with генерируется нежелательный параметр и как я могу остановить его от этого?

   <%= form_with(url: '/booking-confirm', method: :post, local: false) do |f| %> 

  <br>Select a time:<br><br>
    <% days.each do |day, availabilities| %> 
      <% availabilities.each do |avail| %>
          <%= f.label avail.time_slot %> 
          <%= radio_button_tag(:time_slot, avail.time_slot) %><br>
        <% end %> 
        <hr>
      <% end %>
      
  <%= f.submit "Confirm!", class: "btn btn-primary" %>
  <% end %> 

 

Обратите внимание, что нигде в коде нет ссылки на какой-либо booking параметр (ближе всего url: '/booking-confirm' )

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

1. Направляется ли этот запрос в bookings_controller ? Если это так, это может быть связано с ParamsWrapper . Проверьте это сообщение в блоге

2. @AbM хорошие предложения, у меня нет модели / контроллера с именем booking / s, а в контроллере, которому отправляется форма, нет действия с именем booking / s

3. Не могли бы вы опубликовать пример того, как параметры выглядят на контроллере? Кроме того, каково имя контроллера, который обрабатывает эту отправку? Просто чтобы убедиться, что то, чем вы поделились выше, — это целая форма, правильно?