Как не использовать параметр действия Rails в контроллере - PullRequest
7 голосов
/ 02 июня 2011

Я реализую сторонний API для Shipworks на сервере Rails, и клиентское приложение Shipworks публикует параметр action с определенной семантикой Shipworks.

Однако логика маршрутизации Rails перезаписывает этот параметр, чтобы он былимя метода контроллера.

Можно ли написать собственный маршрут, чтобы получить значение этого параметра действия без перезаписи на имя моего метода контроллера?

Ответы [ 2 ]

11 голосов
/ 15 мая 2014

Я попал в эту ловушку сегодня и пришел с этим решением в методе контроллера. Это Rails 4.1:

if request.method == "POST"
  action = request.request_parameters['action']
else
  action = request.query_parameters['action']
end
3 голосов
/ 02 июня 2011

Я понял это.В AbstractRequest .

существует метод raw_post. Таким образом, вы можете сделать это для анализа необработанных параметров записи:

def raw_post_to_hash
  request.raw_post.split(/&/).inject({}) do |hash, setting|
    key, val = setting.split(/=/)
    hash[key.to_sym] = val
    hash
   end
end

, а затем просто вызовите raw_post_to_hash [:действие] для доступа к исходному параметру действия или любому другому параметру.Возможно, есть более простой способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...