2010-01-06 3 views
0

Dans l'un de mes modèles, je souhaite examiner de plus près l'objet contrôleur à l'aide de l'assistant debug().<% = débogage (contrôleur)%> produit une sortie illisible

Il est dit de produire YAML approprié pour la sortie HTML.

Exécution <% = débogage (contrôleur)%> ne produit cependant pas ce que j'appelle lisible.

Il commence par:

#<ClubsController:0x104467378 @_request=#<ActionController::Request:0x104467648 @accepts=[#<Mime::Type:0x101f50f30 @synonyms=["application/xhtml+xml"], 

et va comme ça ...

Toutes les idées sur la façon d'obtenir des informations sur l'objet?

Répondre

2

L'aide debug est principalement destinée à être utilisée avec des objets fournissant une implémentation de to_yaml (tels que les modèles ActiveRecord). Si l'objet transmis ne répond pas à to_yaml (comme dans le cas de la transmission d'un objet contrôleur dans votre exemple), alors debug vous donne le résultat en appelant inspect sur cet objet.

0

Qu'est-ce qui n'est pas lisible à ce sujet? C'est la syntaxe d'inspection ruby ​​standard ... Si vous avez vraiment besoin de quelque chose de "plus lisible" alors vous devrez écrire une méthode sur votre contrôleur (temporairement, très probablement) qui expose simplement ses variables d'instance dans un autre format.

Peut-être que cela vous aiderait si vous notiez ce que vous voulez voir dans l'instance du contrôleur.

+0

Je voulais afficher le nom du contrôleur actuel avec le nom de l'action. Le nom de l'action est disponible dans controller.action_name donc j'ai pensé que je pourrais utiliser debug() pour voir si je pouvais trouver un attribut dans le contrôleur qui contenait le nom. –

+0

Alors, quel est le problème? Examinez cette sortie (ou mieux encore, via les docs ActionController) pour connaître les bons noms de méthodes et faites simplement <% = controller.controller_name%> 'et <% = controller.action_name%>' ou tout ce qu'ils finissent par être. – rfunduk

1

J'ai vu votre commentaire @thenduks répondre.

En fait, il existe une méthode:

controller.controller_name 

qui retourne le nom du contrôleur.

+0

Merci. Exactement ce que je cherchais. Juste trouvé la page dans la documentation à ce sujet aussi. –

Questions connexes