【发布时间】: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] 对象具有我所期望的(字符串数组)。但是,如果我只打印出params,permitted 是假的,如果我打印出thing_params,details 不会包含在哈希中。
有人看到我做错了吗?
我还怀疑在表格中使用name: 'details[]' 是错误的,并且感觉如果我走到那一步,只有最后一个会进来......
【问题讨论】:
标签: ruby-on-rails arrays activerecord strong-parameters ruby-2.3