如何在 Rails 参数中将多个选择值作为数组发送?

How to Send Multiple Select Values as an Array in Rails Params?

提问人:andgarzonmal 提问时间:9/12/2023 更新时间:9/13/2023 访问量:33

问:

我在 Rails 应用程序中有一个复杂的表单,我在其中使用模板的多个实例。每个模板都包含产品变体的下拉列表。提交表单后,我想将每个下拉列表的选定值作为参数中的数组发送。

这是我的表单的简化示例:

<div class="nested-form-wrapper">
  <!-- Other form fields -->
  <div class="variatios_form_container"></div>

  <template id="variationsFormTemplate">
    <div data-controller="variations">
      <select id="variation_select" data-action="change->variations#change">
        <!-- Options -->
      </select>
      <div>
        <%= f.label :variation_options, 'Select an option' %>
        <%= f.select :variation_options, [], {}, {data: {variations_target: "optionsSelect"}} %>
      </div>
    </div>
  </template>
</div>

在我的控制器中,我想处理这些多个variation_options值。理想情况下,它们将作为参数中的数组出现,如下所示:

params[:product_stock][:variation_options] = [val1, val2, val3, ...]

如何构建我的表单或控制器来实现这一点?

我尝试过什么:

在“选择名称”中设置数组:尝试将选择命名为 variation_options[] 以使其成为数组,但收到 NoMethodError。

<%= f.select 'variation_options[]', [], {}, {data: {variations_target: "optionsSelect"}} %>

分配唯一 ID:我试图通过递增计数器为每个选择元素分配唯一的 ID,但这并不能解决将它们作为参数中的数组发送的问题。

Ruby-on-Rails 形成 强参数

评论

0赞 max 9/13/2023
为了从一个选择元素发送多个值,您需要设置属性。developer.mozilla.org/en-US/docs/Web/HTML/Element/......multiple
0赞 max 9/13/2023
除了传递选项并将参数作为数组列入白名单外,您不需要从 Rails 端执行任何操作。multiple: true

答:

0赞 David 9/13/2023 #1

设置有诀吗?multiple: trueselect

<%= f.select :variation_options, [], {multiple: true}, {data: {variations_target: "optionsSelect"}} %>

评论

0赞 andgarzonmal 9/13/2023
不是真的,我不希望在一个选择标签中选择多个选项,我想要的是多次复制模板,并且对于每个选择标签,取值以将其作为参数中的数组传递