新手问题 params.require 为什么过滤失效

wawayu · 2017年07月05日 · 最后由 wawayu 回复于 2017年07月05日 · 1938 次阅读

params.require(:person).permit(:name, :password,:adress) ,用来过滤时,为什么过滤后的结果还是没有的过滤前的值 过滤前:Parameters: {"utf8"=>"���", "authenticity_token"=>"61rMuV5wQEk4Wq15T0NAGNpKlo0GXJmvwP9jNZpJQMg=", "person"=>{"name"=>"jyw", "password"=>"[FILTERED]", "adress"=>"[email protected]"}, "commit"=>"������"} 过滤后: {"utf8"=>"���", "authenticity_token"=>"61rMuV5wQEk4Wq15T0NAGNpKlo0GXJmvwP9jNZpJQMg=", "person"=>{"name"=>"jyw", "password"=>"123456", "adress"=>"[email protected]"}, "commit"=>"������", "controller"=>"index", "action"=>"create"} 为什么会这样,求大神解释。rails 版本是 4.1.2,ruby 是 19.3

过滤前的内容里 key 都是 String ,试试用 string

params.require("person").permit("name", "password","adress") 
will_c_j 回复

试了一下,还是一样的结果😂 难道 rails 还有偶尔抽风的时候?这个问题今天才出现,用了块一个月了都没问题😂 这是为啥啊,怎么会失效了呢

wawayu 回复

我记得 params 是 ActionController::Parameters 并不是 ActiveRecord 所以好像不能这么用

最后调用下一 to_h 试试

抽风的 ruby 啊,没理由有问题的,一直没改过,咋会有问题呢

没问题吧,不就是三个数据么: “person"=>{"name"=>"jyw", "password"=>"123456", "adress"=>"[email protected]"}

请你把代码排版一下吧。

ruby 抽风好了,我把所有想要的数据的 key 换了一遍,然后就好了,换成和数据库一样的了,因为今天换了数据库,其他的没换,就这个地方有问题,之前 form 表单中的变量名也是这样也没问题,可能是隐藏的一个小问题吧。开森。

wawayu 关闭了讨论。 07月05日 14:53
需要 登录 后方可回复, 如果你还没有账号请 注册新账号