重构之前:
不要更改参数哈希:params[:q1,:q2,...]
def search
params.except!(:action, :controller)
@search = User.search(params)
render "search"
end
假如在search这个action之后,有业务需要参数params[:action]和params[:controller],则必须面临重构代码。
重构之后:
取代复制参数哈希params[:q1,:q2,...]
def search
filter = params.except(:action, :controller)
@search = User.search(filter)
render "search"
end
更好的做法是,写一个类似于强参数风格的方法来分离参数。如下:
def search
@search = User.search(search_params)
render "search"
end
private
def search_params
# params.except(:action, :controller)
params.permit(:user_id, :name)
end