Как добавить переменные массива в таблицу базы данных

0

У меня есть форма. Публикация переменных массива из этой формы с тем же именем. (Извините за мой плохой английский.) Вот пример:

<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

Если я использую это, как я могу определить необходимые переменные. Пожалуйста, помогите мне и извините за мой английский :)

Примечание. У меня есть новая форма сообщения, и я должен добавить некоторые переменные в другую таблицу в форме сообщения (это те массивы)

1 ответ

0

Вы должны указать, что 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, вы все равно отфильтруете все атрибуты.

Надеюсь это поможет! Дайте мне знать, как это происходит

Ещё вопросы

Сообщество Overcoder
Наверх
Меню