У меня есть форма. Публикация переменных массива из этой формы с тем же именем. (Извините за мой плохой английский.) Вот пример:
<input type="text" name="name[]" class="form-control">
Он приближается, как ["a", "b", "c"]
Мне нужно сохранить эти переменные в mysql из массива. Не с массивом. Только один за другим.
Создать из моего почтового контроллера
array_length = params[:type].size
for i in 0..array_lenth
type = params[:type][i]
name = params[:name][i]
title = params[:title][i]
value = params[:value][i]
#And save code.
end
Я знаю, что могу сэкономить с некоторым обычным sql-запросом, но я не знаю, должен ли я использовать или как я могу использовать params, требующие разрешения. что-то вроде
def form_params
params.require(:form).permit(:id, :type, :name, :value, :title, :post_id)
end
Если я использую это, как я могу определить необходимые переменные. Пожалуйста, помогите мне и извините за мой английский :)
Примечание. У меня есть новая форма сообщения, и я должен добавить некоторые переменные в другую таблицу в форме сообщения (это те массивы)
Вы должны указать, что param является фактическим массивом, например:
def form_params
params.require(:form).permit(:id, :type, :value, :title, :post_id, name: [:name_of_attribute, :another_name_for_attribute])
end
А затем для вашей формы:
<div class="field">
<%= form.text_field "name[name_for_attribute]" %>
</div>
Где name_for_attribute
- это имя атрибута, которым вы хотите его видеть, поэтому на контроллере вы будете читать параметры, такие как:
"form" => {"name"=>{"name_for_attribute"=>"The entered value"}
Вы можете изменить name_for_attribute
на все, что хотите, и если по какой-то причине кто-то пытается добавить еще одну странную вещь в массив, проверив HTML, вы все равно отфильтруете все атрибуты.
Надеюсь это поможет! Дайте мне знать, как это происходит