Я думаю, что ваша проблема вызвана тем, что ваш json не совсем прав (и то, как rails интерпретирует его по умолчанию).
Если вы проверите свой файл журнала (log / development.log), выувидеть что-то вроде следующего (хотя и с меньшим количеством разрывов строки):
Processing by PlayersController#create as HTML
Parameters: {
"email"=>"aaaa@baaab.com",
"username"=>"jaaaack",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"players"=>{
"email"=>"aaaa@baaab.com",
"username"=>"jaaaack",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"
},
"controller" => "players",
"action" => "create"
}
Как вы можете видеть, данные json включаются дважды - один раз в корень хэша params и снова в качестве значения для ключав параметрах, используя (я думаю) имя контроллера в качестве ключа.
Таким образом, если вы правильно настроили attr_accessible, вы можете выполнить одно из следующих действий в PlayersController # create:
@player = Player.new(params[:players])
OR
@player = Player.new(params)
Очевидно, это затруднит использование вами того же действия в контроллере для обработки данных из отправки HTML-формы.Чтобы обойти это, вы можете обернуть JSON следующим образом:
{ "player":
{
"email": "aaaa@baaab.com",
"username": "jaaaack",
"password": "abc123",
"password_confirmation": "abc123"
}
}
, что заставит params[:player]
содержать правильную информацию для создания новой записи с использованием существующего кода