2

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

我所拥有的是:

def event_recurrence_params
  params.require(:event_recurrence).permit(:room_id, [...], :on, :every)
end

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

>> event_recurrence_params
=> {"room_id"=>"1", [...], "every"=>"week"}

即使 的params[:event_recurrence]值为

>> params[:event_recurrence]
=> {"room_id"=>"1", [...], "on"=>["wednesday"], "every"=>"week"}

如您所见,即使该属性是允许的并且包含它,该:on属性也没有被考虑。event_recurrence_paramsparams[:event_recurrence]

有任何想法吗?我已经尝试了很多东西,但都没有奏效。谢谢!

4

1 回答 1

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: [])
于 2013-09-05T16:46:41.650 回答