我很高兴地使用Rails很长一段时间并愉快地接受使用params hash但我突然意识到我错过了一些基本的东西。
它不是传递给我的动作的对象,它没有以@为前缀使其具有对象级范围,但它可用于我的控制器中的其他方法。
它的值设置在何处以及它的范围是什么?
答案 0 :(得分:1)
params
目前是ActionController :: StrongParameters模块中的一个方法,它从request.parameters
获取其值。 (在其他模块中有类似命名的方法,但这是在从ActionController :: Base继承的普通控制器中使用的方法。)
答案 1 :(得分:0)
也许我可以在这里说清楚。我不确定params的设置位置,但它在请求处理的早期阶段,在它到达您的代码之前。
参数中有三组:用户参数(你通常关心的东西),路由参数(基于url,即:/ users / 1)和默认参数(控制器和动作)
参数仅在控制器中使用params [],但您始终可以将其传递给模型中的方法。虽然传递整个哈希是不好的做法。
通常你会设置局部变量并将它们传递给方法或将它们分配给实例变量(@foo = params [:foo]),如果你希望它们在视图中可用。