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

wawayu · July 05, 2017 · Last by wawayu replied at July 05, 2017 · 1931 hits

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") 
Reply to will_c_j

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

Reply to wawayu

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

最后调用下一 to_h 试试

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

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

请你把代码排版一下吧。

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

wawayu closed this topic. 05 Jul 14:53
You need to Sign in before reply, if you don't have an account, please Sign up first.