正在从请求对象读取Rails参数



我正在开发Rails 6,我正在研究在控制器中读取参数的不同方法。我看到Rails文档列出了params[:param_key]作为一个例子,这确实有效。但是,我注意到request[:param_key]也返回相同的值。关于这种行为,我有几个问题:

  1. 为什么请求对象在作为哈希键直接读取时能够公开这些值?根据我在文档中对此对象的了解(https://api.rubyonrails.org/v7.0.3.1/classes/ActionDispatch/Request.html)我找不到任何迹象表明这是一种应该奏效的行为。

  2. 使用";params";或者读取控制器内参数的请求对象?从我的测试来看,两者的行为方式相同,但我想知道是否有最佳实践。

谢谢。

我相信,如果你深入研究代码,你会找到第一个问题的答案。

关于第二个问题,您最终需要使用经过消毒的参数,或者";强参数";,并且这对params对象进行操作。请注意,它不是一个散列,而是ActionController::Parameters的一个实例。在它的原始形式中,它有一个permitted=false属性,在明确允许之前,您将无法保存任何传入参数。

就第一个问题而言,我可以在Request的文档中看到一个包含模块的列表,其中包括ActionDispatch::Http::Parameters,这个模块包括一个params方法。第二个问题由@Les Nightingill 完美回答

最新更新