Existe alguma maneira para ver qual rota correspondeu a um pedido do navegador no Rails?

StackOverflow https://stackoverflow.com/questions/811314

  •  03-07-2019
  •  | 
  •  

Pergunta

Na minha routes.rb arquivo Eu tenho um número de rotas. Eu gostaria de saber qual foi combinado para qualquer pedido que um usuário pode ter feito.

Por exemplo, em routes.rb você tem as seguintes rotas:

map.connect ":controller/:action"
map.connect ":controler/:action/:id"

e se eu tiver um controlador chamado a e uma ação chamada primeira , quando um usuário vai para http: // tudo o / a / primeira , eu gostaria de ver que o : controller /: action rota era pegou.

Posso fazer isso para qualquer pedido?

Foi útil?

Solução

Se você só quer saber qual controlador / ação que você está dentro, o controlador fornece métodos controller_name e action_name. Assim que você pode fazer algo como isto:

# in application_controller.rb
before_filter :set_where_am_i
def set_where_am_i
  @where_am_i = "#{controller_name}/#{action_name}"
end

# in views/layouts/application.erb, somewhere in your html
# (here I choose the <title>)

<head><title>Here: <%= @where_am_i %></title>

Outras dicas

A coisa mais próxima que eu poderia encontrar era nos arquivos de log. Você vai ver por cada pedido que a ação da qual controlador correspondido. Você vai ver algo como isto:

Parameters: {"action"=>"show", "id"=>"2", "controller"=>"mycontroller"}

A partir daí, ele deve ser fácil, certo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top