Вложенные атрибуты не допускаются с помощью встроенного монгоидного документа через 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 }]
Это работает!