Вложенные атрибуты Rails JSON

Я работаю над API Rails 4, где клиент может отправлять данные в контроллер, и он будет сохраняться в базе данных. Мне было интересно, как я могу реализовать пользователя для POST вложенного JSON, а затем заставить контроллер принять атрибуты и создать с ними модель. JSON будет выглядеть примерно так

{
  'identifier': {
    'name': 'Test'
  }
}

Затем в частном методе у меня есть

def parameters
    params.respond_to?(:permit) ?
        params.require(:picture).permit(:identifier) :
        params[:picture].slice(:identifier) rescue nil
  end

И когда я пытаюсь получить доступ к параметру «имя» в моем контроллере как parameters[:identifier][:name], я получаю неопределенный метод []. Какие-либо предложения?

Создать действие

@picture = current_user.pictures.new(name: parameters[:identifier][:name])

Модель на фото имеет только t.string :name


person ny95    schedule 28.07.2013    source источник
comment
Опубликуйте код для создания действия вашего контроллера, а также какие поля у вас есть в базе данных, т.е. ваши модели.   -  person CuriousMind    schedule 28.07.2013


Ответы (2)


Похоже, что JSON имеет строку 'identifier' в качестве ключа, тогда как вы пытаетесь получить к ней доступ с помощью символа :identifier, который возвращает nil. Итак, [] не определено на nil. Вероятно, вам следует сделать parameters["identifier"]["name"].

person sawa    schedule 28.07.2013

Вы можете использовать вложенные JSON, если вы создаете их в своих разрешенных параметрах, таких как:

  def parameters
    params.respond_to?(:permit) ?
        params.require(:picture).permit(:identifier => [ :name ]) :
        params[:picture].slice(:identifier => [ :name ]) rescue nil
  end

Это работает на Rails 4 с использованием сильных параметров.

person ny95    schedule 29.07.2013