Передача массива в hidden_field_tag, преобразованный в строку

#ruby-on-rails #slim #hidden-field

#ruby-on-rails #тонкий #скрытое поле

Вопрос:

Я пытаюсь передать массив хэшей в hidden_field_tag в форме, но я получаю строку. Промежуточное программное обеспечение или сервер или что-то промежуточное изменяет хэши на строки. Перед отправкой контроллеру массив уже изменился на строку, прежде чем быть назначенным полю.

   = hidden_field_tag :cities, @cities
  = hidden_field_tag :longitude, params[:longitude]
  = hidden_field_tag :address, params[:address]
  = hidden_field_tag :category, params[:category]
  = hidden_field_tag :city, @city
  = hidden_field_tag :state, @state
  = hidden_field_tag :category, @category
  = hidden_field_tag :user_id, @user.id
  

Ответ №1:

Мне удалось решить проблему с помощью моего старшего коллеги,:

  1. В html / тонкий файл:
      = hidden_field_tag :cities, @cities.map {|city| city.as_json}.to_json
  
  1. Настройка в контроллере:
      cities = params[:cities].is_a?(String) ? JSON.parse(params[:cities]) : params[:cities]
     cities.map { |city| city.with_indifferent_access }
  

Я все еще ищу предложения, если этот подход правильный, и очень хотел бы знать, есть ли лучший подход.