0

表单和控制器中的字符串数组

我正在使用 Rails 5 和 Ruby 2.3.1

我无法弄清楚如何让表单允许我将字符串添加到我的一个模型上的数组中,并且数组中的每个元素都有一个输入字段。为了更新现有记录,我希望当时数组中的每个元素都有一个单独的输入字段。

我想要一个新记录的表单,允许我使用一个单独的输入字段为我决定添加的每个元素添加一个或多个元素到这个数组。

我该怎么办?我可以处理使用 jquery 添加输入,但我不知道如何使用 rails 表单构建器类来执行此操作。

此列只是一个字符串数组。

这是目前不起作用的:

<!-- _form.html.erb -->
...
  <%= f.label :details %>
  <% @project.details&.each do |detail| %>
      <%= f.text_field :details, 
                       name: 'details[]', 
                       class: 'form-control', 
                       value: detail %>
  <% end %>
...

这是我的控制器中的内容:

...
private

  def thing_params
    params.require(:thing).permit(..., details: [])
  end
...

此时,如果我中断创建控制器操作并检查参数,则该params[:details]对象具有我所期望的(字符串数组)。但是,如果我只是 print out paramspermitted则为 false ,如果我 print out thing_paramsdetails则不包含在哈希中。

有谁看到我做错了什么?

我还怀疑name: 'details[]'表单中的使用是错误的,并且感觉如果我走那么远,只有最后一个会进来......

4

1 回答 1

2

难道你不只是喜欢整天尝试解决一个问题,在你认输后花很多时间写一个 stackoverflow 问题,然后才在 5 分钟后弄清楚吗?我当然会。

需要改变的是我在表格中输入的内容:

<!-- _form.html.erb -->
...
  <%= f.label :details %>
  <% @project.details&.each do |detail| %>
      <%= f.text_field :details, 
                       # name: 'details[]', (this is what I had before)
                       name: 'thing[details][]', 
                       class: 'form-control', 
                       value: detail %>
  <% end %>
...
于 2016-10-30T22:25:08.453 回答