0

ドキュメントと埋め込みドキュメントを Ajax 呼び出しで送信しようとしていますが、「許可されていないパラメーター」例外が引き続き発生します。これは私のモデルです:

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 呼び出し:

$.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

皆さん、ありがとうございました!

4

1 に答える 1

0

わかりました、私はこれを理解しました。

最初: 明らかに、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 (undefined method `with_indifferent_access' for "2016-11-25":String): * エラーが発生しました。これは、時間エントリの値が配列である必要があるという事実によるものです。

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

これはうまくいきます!

于 2016-11-24T16:56:40.657 に答える