新手问题 如何处理数组的 strong params?

smartepsh · 2016年12月02日 · 最后由 night_7th 回复于 2016年12月02日 · 1719 次阅读

用途:

批量操作

参数形式

  1. [{a:av1, b:bv1, c:cv1},{a:av2, b:bv2, c:cv2},{a:av3, b:bv3, c:cv3}]
  2. {data: [{a:av1, b:bv1, c:cv1},{a:av2, b:bv2, c:cv2},{a:av3, b:bv3, c:cv3}]}

问题

如何使用 strong params 处理传入的参数?

params.require(:product).permit(:name, tags: [])

strong_params 还是弱了一点,hanami-validation 或者 dry-validation 对于参数的 sanitize 和验证更强。

#2 楼 @novtopro 谢谢回复,我去看看 hanami,顺便一提,第一条回复对于我的这种形式是无效的。(或者是我调用问题) tags 里面还是数组,等于是我要对数组的数组中的元素进行 permit...

#2 params.permit(:data => [[:a, :b]])

#4 楼 @matrixbirds 我试过这种写法,但是似乎提示 RecordInvalid,不知道控制器里应该怎么写呢?

直接使用了 JSON.parse(request.body.read) 来处理形式 1 这样的数据了...

我是这么做的:

params.require(:xxx).map do |param|
  ActionController::Parameters.new(param.to_hash).permit(:aaa, :bbb)
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号