Savoir de quel controlleur et de quelle action l'on vient?

Bonjour,

Je monte un système d’aide en ligne.

C’est possible de savoir au sein d’un controlleur de quel controller
et de quelle action l’on vient ? sans utiliser les sessions ?

Ciao’

controller_name et action_name sont des fonctions de
ActionController::Base

Seb

Le 6 juil. 06 à 08:31, Mathieu C. a écrit :

Salut !

À ce que je sache, rails ne propose pas de methode ou de variable
contenant cette info…

Mais créer une telle variable ne semble pas très difficile. En théorie :

class ApplicationController < ACB
before_filter :route_memory

def route_memory
@previous_controller_name = flash[:controller_name] # variable
d’instance si tu veux pouvoir y accéder dans la vue…
@previous_action_name = flash[:action_name] # …sans quoi
une variable locale devrait suffire.
flash[:controller_name] = controller_name
flash[action_name] = action_name
end

end

devrais suffire. Je n’ai pas le temps de tester. Mais quelque chose
dans le genre devrait aider :slight_smile:

Le seul truc c’est que je ne sais pas si controller_name et
action_name sont déjà initialisées dans les pré-filtres… J’ai
présumé que oui.

Bonne chance,
Nicolas

Le 6 juil. 06 à 08:35, Sébastien Gruhier a écrit :

Bonjour,

Je monte un système d’aide en ligne.

C’est possible de savoir au sein d’un controlleur de quel controller
et de quelle action l’on vient ? sans utiliser les sessions ?

Salut Mathieu

même réponse que Nicolas, je ne connais pas d’autre moyen que les
sessions
pour l’instant… Dans Rails Recipes, ils utilisent cette méthode (ex:
intercepter les appels avec un filtre pour vérifier l’authentification,
si
pas authentifié noter le controleur et l’action en session, rediriger
vers
le controleur d’authentification, puis redirection vers le controleur et
l’action initial en cas de succès)

a+

Thibaut

même réponse que Nicolas, je ne connais pas d’autre moyen que les sessions
pour l’instant…
Dans Rails Recipes, ils utilisent cette méthode (ex:
intercepter les appels avec un filtre pour vérifier l’authentification, si
pas authentifié noter le controleur et l’action en session, rediriger vers
le controleur d’authentification, puis redirection vers le controleur et
l’action initial en cas de succès)

J’ai trouvé c’est tout bète : HTTP_REFERER

[help_controller.rb]

def show_help
textiletext=File.open(RAILS_ROOT+‘/public/help.textile’,“r”).readlines.to_s
render :text=>RedCloth.new(textiletext).to_html , :layout=> ‘help’
end

def popup
textiletext=File.open(RAILS_ROOT+‘/public/help.textile’,“r”).readlines.to_s
url=request.env[‘HTTP_REFERER’]
#ex: j’arrive ici venant de http://monsite/admin.user

#A adapter si l'appli rails est dans un sous dossier.
#Aurait été plus propre avec une regexp, mais j'ai pu faire qq

chose de satisfaisant
controller=url.split(‘/’)[3]
action=url.split(‘/’)[4]
action = ‘’ if action==nil

section=controller+'.'+action
redirect_to '/help/show_help#'+section
# http://monsite/help/show_help#admin.user

end

et dans l’aide en textile :

Blabla

l’administration des utilisateurs blabla.
Blabla

J’ai trouvé c’est tout bète : HTTP_REFERER

Attention, ce n’est pas très fiable comme solution

J’ai trouvé c’est tout bète : HTTP_REFERER

je ne te recommande pas cette option… C’est un champ fixé par le
client
(qui peut ne pas être là , ou avoir des valeurs farfelues…).

J’ai trouvé c’est tout bète : HTTP_REFERER

je ne te recommande pas cette option… C’est un champ fixé par le client
(qui peut ne pas être là, ou avoir des valeurs farfelues…).

Application Intra, j’ai pas trop peur :slight_smile: