Если вы работаете в контроллере, у вас также должен быть доступ к объекту запроса.
Короче говоря, рельсы и стойки готовят входящие запросы GET / POST (form, xml, json)и извлеките параметры, чтобы разработчики имели согласованный способ доступа к ним.
ActionDispatch предоставляет сводный список параметров с помощью:
# ActionPack 3.1.8 - action_dispatch/http/parameters.rb
# Returns both GET and POST \parameters in a single hash.
def parameters
@env["action_dispatch.request.parameters"] ||= begin
params = request_parameters.merge(query_parameters)
params.merge!(path_parameters)
encode_params(params).with_indifferent_access
end
end
alias :params :parameters
Как видите, params является псевдонимом дляметод параметров, который является объединенным хешем из двух подхешей: request_parameters и path_parameters .
В вашем случае вам не нужны path_parameters.Вместо использования кроме, которое заставляет вас знать, какие параметры пути вы хотите исключить, вы можете получить доступ к своим данным с помощью: request.request_parameters .
Словопредостережение : Вам может быть лучше использовать: за исключением случаев, когда требуется, чтобы хеш-кодировался и ключи были доступны в виде строк или символов.Последняя строка метода параметров обрабатывает это для вас:
encode_params(params).with_indifferent_access
Альтернативный подход, использующий исключение и гарантирующее, что вы удаляете все рельсы без параметров:
path_params = request.path_parameters
params.except(*path_params.keys)