Rails:定义"params"的地方?

Mis*_*hko 11 ruby-on-rails params ruby-on-rails-3

params在我的控制器中使用如下:

class ProductsController < ApplicationController
  def create
    @product = Product.new(params[:aircon])
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

params的属性ApplicationController?我猜不是,因为它没有@前缀.那么,究竟params是什么?我可以在任何自定义方法中使用它ProductsController吗?

ice*_*eam 10

它在ActionController :: Metal中定义.ApplicationController继承自ActionController :: Base,它来自ActionController :: Metal.如果你查看http://api.rubyonrails.org/上的Rails API ,你会发现params它只是一个返回request对象参数的函数.


Ada*_*sek 7

这些参数实际上是在名为ActionDispatch :: ParamsParser的中间件中解析的.该params函数ActionController::Metal是这个包装.