2016-04-26 3 views
0

У меня есть следующее определение:Рельсы вложенные атрибуты, проходящие с JQuery

params.require(:sets).permit(:name, zones_attributes: [:latitude, :longitude]) 

И я хотел бы, чтобы отправить их по AJAX с JQuery, то, я думаю, что я строить это неправильно, потому что я получаю эту ошибку :

Unpermitted parameters: 0, 1

Это то, что я посылаю:

{ 
"sets"=>{ 
    "name"=>"America", 
    "zones_attributes"=>{ 
     "0"=>[ 
      "49.95121990866204", 
      "-117.861328125" 
     ], 
     "1"=>[ 
      "-33.578014746143985", 
      "-55.986328125" 
      ] 
     } 
    }, 
    "action"=>"create", 
    "controller"=>"sets" 
} 

Я думаю, что проблема является «ключевое» значение добавляется до значения широты/долготы. Это, как я добавляю эти значения:

this.zones.push([marker.position.lat(), marker.position.lng()]); 

Есть ли способ, чтобы добавить их без ключей? Или я ошибаюсь?

UPDATE

код Ajax:

$.ajax({ 
     type: "POST", 
     url: '/zone_sets', 
     data: { zone_sets: { name: map.markerListName ,zones_attributes: map.zones } }, 
     success: function (data) { $("input[name=zone_set]").append(data) }, 
     }); 
+0

Это то, что я печатаю в своем вопросе после «Это то, что я отправляю» – WhomWhomWhom

+0

Извините, только что поняли^ –

+0

Почему у них нет ключей? Не могли бы вы разместить код для своей формы? У вас есть 'accepts_nested_attributes_for'? Используете ли вы 'fields_for'? – toddmetheny

ответ

0

Измените текущий ajax код:

$.ajax({ 
     type: "POST", 
     dataType: 'json', 
     headers: { 
      'Content-Type': 'application/json' 
     }, 
     url: '/zone_sets', 
     data: JSON.stringify({ zone_sets: { name: map.markerListName ,zones_attributes: map.zones } }), 
     success: function (data) { $("input[name=zone_set]").append(data) }, 
    }); 

Как вы можете видеть, актуальной проблемой является как Rails обрабатывать и анализировать запрос.

+0

работал отлично! благодаря!!!! – WhomWhomWhom

0

Вы должны добавлять их так:

this.zones.push({'latitude': marker.position.lat(), 'longitude': marker.position.lng()}); 
0

Да, "ключ" выглядит, как будто это проблема.

params.require(:sets).permit(:name, zones_attributes: [:latitude, :longitude]) ожидает ваш запрос быть в формате:

{ 
"sets"=>{ 
    "name"=>"America", 
    "zones_attributes"=>[ 
    { 
     "latitude": "49.95121990866204", 
     "longitude": "-117.861328125" 
    }, 
    { 
     "latitude": "-33.578014746143985", 
     "longitude": "-55.986328125" 
    } 
    ] 
}, 
"action"=>"create", 
"controller"=>"sets" 
} 

то есть «0» и «1» ошибка имеет в виду, как индексы массива.

+0

Ваш хэш неправильный '" zone_attributes "=> {[.....' –

+0

@ Зелёный только что отредактировал, это исправить? –

+0

Я не знаю, я просто указываю на неправильный синтаксис. –

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