Вложенные атрибуты не допускаются с помощью встроенного монгоидного документа через AJAX

Я пытаюсь отправить документ и внедренный документ с помощью вызова Ajax, но продолжаю получать исключение "Unpermitted параметр". Это моя модель:

class UserForecast
...
  embeds_many :time_entries
  accepts_nested_attributes_for :time_entries
...
end

Мои сильные параметры:

def user_forecast_params
  params.require(:user_forecast).permit(:published, :user_id, :forecast_id, :project_role_id, time_entries_attributes: [:entry_date, :hours])
end

Аякс вызов:

$.ajax({
    url : '/user_forecasts.json' ,
    data : { user_forecast: { user_id: timeEntry.data('user_id'), forecast_id: timeEntry.data('forecast_id'), project_role_id: timeEntry.data('project_role_id'), time_entries: { entry_date: timeEntry.data('date'), hours: timeEntry.value } }},
    type : 'post',
...

Я не вижу ничего, что мне не хватает, но все же я получаю это в своих журналах:

Unpermitted parameter: time_entries

Я использую: Ruby 2.3.0 Rails: 4.2.6 Mongoid: 5.1.5

Спасибо вам всем!

1 ответ

Хорошо, я понял это.

первое: очевидно, что имя параметра JSON должно быть time_entries_attributes: а не time_entries.

$.ajax({
    url : '/user_forecasts.json' ,
    data : { user_forecast: { user_id: timeEntry.data('user_id'), forecast_id: timeEntry.data('forecast_id'), project_role_id: timeEntry.data('project_role_id'), time_entries_attributes: [{ entry_date: timeEntry.data('date'), hours: timeEntry.value }] }},
    type : 'post',

когда я пересек этот мост, я столкнулся с *NoMethodError (неопределенный метод `with_indifferent_access'для"2016-11-25":String): * ошибка, связанная с тем, что значение записи времени должно быть массивом:

[{ entry_date: timeEntry.data('date'), hours: timeEntry.value }]

Это работает!

Другие вопросы по тегам