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

时间:2013-09-05 16:43:09

标签: ruby-on-rails-4

我在使用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_params属性,即使该属性已被允许且params[:event_recurrence]包含该属性。

有什么想法吗?我尝试了很多东西,但没有一个有效。 谢谢!

1 个答案:

答案 0 :(得分:5)

来自documentation

  

允许的标量类型是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: [])