Итак, я наблюдал какое-то странное поведение при реализации конечной точки для RESTful API, который я создаю для мобильного клиента. Я использую метод PUT для обновления атрибута на модели User
. Я отправляю идентификатор пользователя в качестве параметра URL и значение для обновления внутри объекта JSON. Кажется, все работает нормально, но когда я проверяю параметры через журналы рельсов, я заметил что-то странное. По какой-то причине дополнительный параметр отправляется на бэкэнд, который я не могу объяснить. Вот журналы я вижу, когда я называю эту конечную точку из мобильного клиента:Ruby on Rails - метод PUT создает дополнительные пароли Entry
Parameters: {"enable_security"=>true, "id"=>"7d7fec98-afba-4ca9-a102-d5d71e13f6ce", "user"=>{}}
Как можно видеть выше дополнительный "user"=>{}
добавляется к списку записей параметров. Я вижу это, когда я распечатываю объект params. Я не могу объяснить, откуда это происходит. Я также проверил мобильный клиент только для того, чтобы быть в безопасности, и нет места в коде, где я отправляю параметр с ключом user
. Это очень озадачивает меня и заставляет меня думать, что мне не хватает чего-то довольно простого. Почему существует пустой объект с ключом user
, который отправляется на серверный RESTful API?
Обновление предоставить больше информации
Вот код, который вызывается, когда пользователь нажимает конечную точку, которая обновляет пользователю User
модель:
#PUT /:id/user/update_security_settings
def update_security_settings
@user = User.find_by_id(params[:id])
@user.advanced_security_enabled = params[:enable_security]
respond_to do |format|
if @user.save
response = {:status => "200", :message => "User's security settings updated."}
format.json { render json: response, status: :ok }
else
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Обновление в ответ на комментарии Пользователя
Вот маршруты, которые относятся к user_controller
, контроллеру вида, которые определяют все конечные точки, которые занимаются созданием и обновлением модели User
.
post '/user/upload_profile', to: 'user#upload_profile'
get '/:id/user', to: 'user#find_user'
put '/:id/user/update_security_settings', to: 'user#update_security_settings'
resources :user, :defaults => { :format => 'json' }
Можете ли вы опубликовать форму, из которой вы отправляете, i beilive там есть User.new, если я не ошибаюсь. – coderhs
Существует нет формы его RESTFul api. Я могу опубликовать код, который вызывается при ударе оконечной точки? Это ты имел в виду? @Coderhs – ScottOBot