【问题标题】:handling inputs when iterating over objects in simple form以简单形式迭代对象时处理输入
【发布时间】:2020-03-25 11:46:55
【问题描述】:

所以我有一个表格,我想更新会员的现有成员。 我有表格,然后在里面迭代每个成员,并有一个 hidden_​​field_tag 和我要提交的 members_uid。

但是,当我进入控制器时,只提交了最后一个成员 uid。我相信这是因为由于迭代,hidden_​​field_tag 中的 :patient_uid 对于每个成员提交都是相同的,因此只需要最后一个。

我的代码如下:

		<%= 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,以便我可以访问它们。 如果这没有意义,请道歉。

这是我将 id 插入 uid 时返回的内容。当键具有唯一名称时,我不确定如何访问每个值

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    如果它们在名称标签中都有不同的值,那么你最后尝试的应该已经完成​​了。当不同字段的名称标签具有相同的值时,会出现此问题。让我们看看下面的例子 -

    <% (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 %>
    

    然后它将提交所有字段,因为它们在名称标签中具有不同的值。

    请检查并检查循环中的名称标签是否都相同。让每一个都独一无二,这应该可以解决您的问题。

    第二次修改您的问题

    如果你想把它们放在一个数组中,你必须将名称标签变成可以接受数组值的东西。试试下面的 -

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

    这样它将插入数组中的所有值,您可以以params[:patient_uid] 访问该数组。

    【讨论】:

    • 感谢您的回答。所以是的,这确实有效,但是我无法在控制器中选择参数,因为每个参数现在都有一个唯一的名称。有没有办法解决这个问题?我在我的问题中添加了参数图像
    猜你喜欢
    • 2020-10-15
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2011-08-27
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多