Rails 4 params.require().permit()不考虑一个属性

Fra*_* QV 2 ruby-on-rails-4

我在使用该params.require().permit()方法时遇到问题,因为它没有考虑我设置的属性之一,即属性:on

我有的是这个:

def event_recurrence_params
  params.require(:event_recurrence).permit(:room_id, [...], :on, :every)
end
Run Code Online (Sandbox Code Playgroud)

然后,当我打电话时event_recurrence_params,答案是

>> event_recurrence_params
=> {"room_id"=>"1", [...], "every"=>"week"}
Run Code Online (Sandbox Code Playgroud)

即使价值params[:event_recurrence]

>> params[:event_recurrence]
=> {"room_id"=>"1", [...], "on"=>["wednesday"], "every"=>"week"}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,即使属性被允许并且包含它,:on也不会考虑event_recurrence_params该属性params[:event_recurrence].

有任何想法吗?我尝试了很多东西,但没有一个有效.谢谢!

Pie*_*ois 5

文档:

允许的标量类型是String,Symbol,NilClass,Numeric,TrueClass,FalseClass,Date,Time,DateTime,StringIO,IO,ActionDispatch :: Http :: UploadedFile和Rack :: Test :: UploadedFile.

要声明params中的值必须是允许的标量值数组,请将键映射到空数组:

所以你需要这样做:

params.require(:event_recurrence).permit(:room_id, [...], :every, on: [])
Run Code Online (Sandbox Code Playgroud)