【问题标题】:Rails - strong parameters - string array column - formRails - 强参数 - 字符串数组列 - 表格
【发布时间】:2016-10-30 21:42:29
【问题描述】:

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

我正在使用 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] 对象具有我所期望的(字符串数组)。但是,如果我只打印出paramspermitted 是假的,如果我打印出thing_paramsdetails 不会包含在哈希中。

有人看到我做错了吗?

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

【问题讨论】:

    标签: ruby-on-rails arrays activerecord strong-parameters ruby-2.3


    【解决方案1】:

    你不就是喜欢整天尝试解决一个问题,在认输之后花大量时间写一个 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 %>
    ...
    

    【讨论】:

      猜你喜欢
      • 2017-09-14
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多