обработка входных данных при переборе объектов в простой форме - PullRequest
0 голосов
/ 25 марта 2020

Итак, у меня есть форма, с которой я хочу обновить существующих членов членства. У меня есть форма, внутри которой я перебираю каждого члена, и у меня есть hidden_field_tag ​​с members_uid, который я хочу отправить.

Однако, когда я go в контроллер, был отправлен только последний элемент uid , Я полагаю, что это потому, что: Patient_uid внутри hidden_field_tag ​​одинаков для каждой отправки элемента из-за итерации, поэтому он принимает только последнюю.

Мой код ниже:

		<%= simple_form_for [@membership_policy], url: admin_membership_policy_add_members_to_policy_path(@membership_policy) do |f| %>
			<% @membership_policy.members.each do |member| %>
                         <div class="form-group form-group__search <%= 'has-error' if local_assigns[:errors]&.any? %>">
        		  <%= hidden_field_tag :patient_uid, member.patient.uid, class: "patient_uid" %>
                         </div>
			<% end %>
      	<%= f.button :submit, value: "Save", data: { disable_with: t('common.processing') }, class: "hero-button btn_light_turquoise font-weight-500", style: "margin: -5px 0 0 5px;" %>
		<% end %>
Я также пытался сделать:
  <%= hidden_field_tag "patient_uid_#{member.patient.id}", member.patient.uid, class: "patient_uid" %>

Однако я не могу получить доступ к каждому uid в контроллере, делая это. В общем, я просто хочу иметь возможность отправить форму и иметь коллекцию member_uids в массиве или что-то подобное, чтобы я мог получить к ним доступ. Извинения, если это не имеет смысла.

enter image description here Это то, что возвращается, когда я интерполирую идентификатор в uid. Я не уверен, как получить доступ к каждому значению, когда ключи имеют уникальные имена

1 Ответ

0 голосов
/ 25 марта 2020

То, что вы попробовали в последний раз, должно было сделать это, если все они имеют разные значения в теге имени. Эта проблема возникает, когда тег имени разных полей содержит одно и то же значение. Давайте рассмотрим приведенный ниже пример -

<% (0..5).each do |a| %>
  <%= hidden_field_tag "patient_uid", a, class: "patient_uid" %>
<% end %>

. В этом случае он всегда будет отправлять последнее поле со значением 5. Но если вы измените его, как показано ниже -

<% (0..5).each do |a| %>
  <%= hidden_field_tag "patient_uid_#{a}", a, class: "patient_uid" %>
<% end %>

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

Пожалуйста, проверьте и проверьте, указан ли тег имени в l oop все одинаковы. Сделайте каждый из них уникальным, и это должно решить вашу проблему.

Для второго редактирования ваших вопросов

Если вы хотите, чтобы они были в массиве, вы должны сделать имя тег в то, что может принимать массив значений. Попробуйте следующее -

<% (0..5).each do |a| %>
  <%= hidden_field_tag "patient_uid[]", a, class: "patient_uid" %>
<% end %>

Таким образом, он вставит все значения в массив, и вы можете получить доступ к массиву как params[:patient_uid].

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