Массив строк в форме и контроллере
Я использую 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[]'
неправильно в форме, и у меня есть ощущение, что только последний придет, если я зайду так далеко...