поля ввода в другом form_tag генерируют одинаковый идентификатор тега - PullRequest
0 голосов
/ 25 марта 2020

У меня есть два form_tag, который содержит поле datepicker в одном файле HTML. Содержимое практически идентично только тому, что time_start отображается в первой форме, а time_end отображается во второй форме.

<%= form_tag sample_path, method: :get do %>
  <%= text_field_tag "time_start", nil, class: "datepicker" %>
  <%= hidden_field_tag "time_end", nil %>
  <%= hidden_field_tag "other_info", nil %>
  ...
  <%= submit_tag "Submit"%>
<% end %>
...

<%= form_tag sample_path, method: :get do %>
  <%= hidden_field_tag "time_start", nil %>
  <%= text_field_tag "time_end", nil, class: "datepicker" %>
  <%= hidden_field_tag "other_info", nil %>
  ...
  <%= submit_tag "Submit" %>
<% end %>

Однако, когда я выбираю дату в time_end, форма отправляется, даже если Кнопка отправки не нажата.

Я предполагаю, потому что поля ввода, сгенерированные в HTML, имеют одинаковый идентификатор.

<form action="sample" accept-charset="UTF-8" method="get">
  <input type="text" name="time_start" id="time_start" class="datepicker hasDatepicker">
  <input type="hidden" name="time_end" id="time_end">
  <input type="hidden" name="other_info" id="other_info">
  ...
  <input type="submit" name="commit" value="Submit" data-disable-with="Submit">
</form>
...
<form action="sample" accept-charset="UTF-8" method="get">
  <input type="hidden" name="time_start" id="time_start">
  <input type="text" name="time_end" id="time_end" class="datepicker hasDatepicker">
  <input type="hidden" name="other_info" id="other_info">
  ...
  <input type="submit" name="commit" value="Submit" data-disable-with="Submit">
</form>

Я добавил index или namespace опции для form_tag, но кажется, что он не применим к form_tag.

<%= form_tag sample_path, {index: 'group_01', method: :get} do %>
...
<%= form_tag sample_path, {namespace: 'group_02',method: :get} do %>
...

Есть ли способ отличить guish идентификаторов элементов в каждом form_tag?

1 Ответ

1 голос
/ 25 марта 2020

Вы правы, form_tag не разрешает методы, которые вы упомянули.

В этом случае, поскольку вы используете hidden_field_tag, вы можете передать 3 варианта, как указано здесь в документации .

Поэтому вам нужно вручную добавить атрибут id к каждому из полей, например так:

 <%= hidden_field_tag "other_info", nil, time_start: "custom_id" %>

Однако проблема, которую вы описываете связан не с самими идентификаторами, а с плагином, который вы используете с Javascript.

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