2014-08-15 2 views
1

Этот код:

var CompanyRecruiters = $resource('/admin/companies/:id/recruiters.json', {id: '@id'}); 

// create a new employee 
var employeeResource = new CompanyRecruiters(); 

employeeResource.employee = {name: "dwq", email: "[email protected]", role: "Admin"}; 

var saveEmployeePromise = employeeResource.$save({id: companyId}); 

NB: Рекрутер и сотрудники эквивалентны в этом случае. На самом деле это должно называться Employee во всем, но в настоящее время он идет на контроллер Recruiters на сервере. Он еще не был реорганизован в контроллер Employee на сервере.

Передает следующие параметры на сервер, когда обещание исполняется:

работы POST "/admin/companies/2/recruiters.json" для 127.0.0.1 в 2014-08-15 13 : 49: 08 +0200 Обработка по Admin :: RecruitersController # create as JSON Параметры: {"employee" => {"name" => "dwq", "email" => "[email protected]", "role" => "Admin"}, "company_id" => "2", "recruiter" => {"employee" => {"name" => "dwq", "email" => " [email protected] "," role "=>" Admin "}}}

Обратите внимание, что параметры отправляются дважды, а один из них завернут в хэш-код "recruiter"=>{.

Но если я просто изменить одну из линий:

employeeResource. рекрутер = {имя: "dwq", электронная почта: "[email protected]", роль: "Admin"};

Затем он посылает следующие параметры сервера:

работы POST "/admin/companies/2/recruiters.json" для 127.0.0.1 в 2014-08-15 13:57 : 24 +0200 Обработка по Admin :: RecruitersController # create as JSON Параметры: {"recruiter" => {"name" => "dwq", "email" => "[email protected]", "role "=>" Admin "}," company_id "=>" 2 "}

Которая отправляет только pa разметки один раз, как кажется.

Почему Angular $ resource ведет себя таким образом?

ответ

1

Это не Угловое, это Rails. У вас, вероятно, есть

ActiveSupport.on_load(:action_controller) do 
    wrap_parameters format: [:json] if respond_to?(:wrap_parameters) 
end 

в config/initializers/wrap_parameters.rb.

Смежные вопросы