У меня есть форма, которая сохраняет значения в хэши. А из контроллера хэш сохраняется в db.Сохранение хэша в БД, содержащем массивы представленных форм.
Вот форма
<%= form_for([@category, @page], url: update_pages_path) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= text_field_tag 'content[key1]' %>
<%= text_field_tag 'content[key2]' %>
<%= text_field_tag 'content[key3]' %>
<%= text_field_tag 'content[key4]' %>
<%= f.submit "Save" %>
<% end %>
Вот где хэш сохраняется в БД
if @page.update (category_params)
@page.update(table_content: params[:content])
redirect_to show_pages_path(@category, @page)
flash[:success] = "Updated."
else
render 'edit'
end
мне нужно изменить форму таким образом, значение в хэш будет массив. А из формы пользователь может добавлять элементы в массив значений.
Это то, что информация сохраняется как в БД в настоящее время
{"key1"=>"value1", "key2"=>"value2", "key3"=>"value3", "key4"=>"value4"}
и мне нужно, чтобы изменить эту
{"key1"=>["value1"], "key2"=>["value2"], "key3"=>["value3"], "key4"=>["value4"]}
Так что в конечном итоге что-то вроде этого можно спастись в db из формы и через контроллер
{"key1"=>["value1a","value1b"], "key2"=>["value2"], "key3"=>["value3a", "value3b"], "key4"=>["value4"]}
Я буду использовать js, чтобы пользователь мог добавить и r emove input, но сначала я должен знать, как будет выглядеть форма, прежде чем я начну с этого.
На данный момент для простоты какая форма и, возможно, контроллер должны выглядеть так, чтобы сохранить нижний хэш в БД.
Какая часть 'content[1]'
нуждается в изменении, поэтому я могу добавить еще один вход в ключ key1
массив значений.
Я не могу найти, как входы сохраняются как массивы, не говоря уже о том, как иметь 2 входа, сохраняемых в том же ключе, что и в массиве.
В основном, что нужно сделать, чтобы сохранить третий массив, указанный в БД, от изменения формы и контроллера, которые у меня есть.
Как пользователь добавить более одного значения в один массив? (желательно из второго поля ввода) '<% = text_field_tag 'content [key1] []'%>' Я предполагаю, что хэш-значение будет иметь массив с одним значением внутри этого массива. Если я добавлю содержимое '<% = text_field_tag '[key1] []'%>' снова в форму, я предполагаю, что она просто перезапишет первое значение ввода, не добавляемое в массив, назначенный 'key1'. – Rob