1

Многие учебники охватывают простое вложение в модель Rails при работе с AngularJS. Но я потратил почти неделю, пытаясь реализовать полиморфные отношения в угловых контроллерах. У меня есть организация с полиморфными телефонами, электронной почтой и т. Д. Я пытаюсь сохранить новую организацию. Вот мой контроллер:Полиморфные отношения рельсов в приложении Angularjs

angular.module('GarageCRM').controller 'NewOrganizationsCtrl', ($scope, $location, Organization) -> 

    $scope.organization = {} 
    $scope.organization.phones_attributes = [{number: null}] 

    $scope.create = -> 
    Organization.save(
     {} 
    , organization: 
     title: $scope.organization.title 
     description: $scope.organization.description 
     phones: 
      [number: $scope.phone.number] 
    # Success 
, (response) -> 
    $location.path "/organizations" 

    # Error 
, (response) -> 
) 

У меня есть accepts_nested_attributes_for :phones в моей модели рельсов и params.require(:organization).permit(:id, :title, :description, phones_attributes:[:id, :number]) в контроллере. При сохранении у меня есть ответ от консоли:

Обработка OrganizationsController # создать в формате JSON Параметры: { "организация" => { "название" => "test212", "телефоны" => [{ "номер "=>" 32323 "}]}} Неперечисленные параметры: телефоны

Любая идея, как это исправить?

+0

Удалась ли эта проблема? – lokeshjain2008

+0

ответ был уже – Stan

ответ

1

Ваша проблема заключается в том, что вы разрешения «phones_attributes» в Админцетр контроллера:

... phones_attributes:[:id, :number] ... 

Но вы отправка «телефонов» в вашем фронтальном контроллере:

... phones: [number: $scope.phone.number] ... 

Таким образом, вы видите «телефоны» атрибут в JSON-сервер получает:

JSON Parameters: ... "phones"=>[{"number"=>"32323"}] ... 

И это правильно сообщает вам, что это не разрешено:

Unpermitted parameters: phones 

Лучший способ исправить это ke контроллер переднего плана отправляет «phones_attributes» вместо «телефонов»:

... phones_attributes: [number: $scope.phone.number] ... 
0

Это может быть сильный PARAMATERS вопрос с рельсов 4. В контроллере рельсы для организации вы должны иметь метод, как follwing

private 
def org_params 
    params.require(:organization).permit(:id, :name, :somethingelse, :photos_attributes[:id, :name, :size ]) 
end 

, а затем в создании метода следует:

def create 
    respond_with Organization.create(org_params) 
end 
+0

да, я упомянул об этом в своем вопросе. Посмотрите последний абзац – Stan

+0

У кого-нибудь есть идеи? – Stan

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