2010-01-06 2 views
0

В одном из моих шаблонов я хочу более подробно рассмотреть объект контроллера с помощью вспомогательного элемента debug().<% = debug (controller)%> производит нечитаемый вывод

Говорят, что он выпускает YAML, подходящий для вывода HTML.

Запуск <% = debug (controller)%>, однако, не производит ничего, что я называю читаемым.

Он начинается с:

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

и продолжается, как ...

Любые идеи о том, как получить некоторую информацию об объекте?

ответ

2

Помощник debug предназначен прежде всего для использования с объектами, которые обеспечивают реализацию to_yaml (например, модели ActiveRecord). Если переданный объект не отвечает на to_yaml (как в случае с передачей объекта контроллера в вашем примере), то debug дает результат от вызова inspect на этом объекте.

0

Что не читается об этом? Это стандартный синтаксис проверки рубинов ... Если вам действительно нужно что-то «более читаемое», вам придется написать метод на вашем контроллере (скорее всего, скорее всего), который просто выставляет его переменные экземпляра в другом формате.

Возможно, это поможет, если вы отметили , что вы хотите увидеть в экземпляре контроллера.

+0

Я хотел показать текущее имя контроллера вместе с именем действия. Имя действия доступно в имени controller.action_name, поэтому я подумал, что могу использовать debug(), чтобы узнать, могу ли я найти атрибут в контроллере, который содержал это имя. –

+0

Так в чем проблема? Просмотрите этот результат (или, еще лучше, через документы ActionController) для правильных имен методов и просто выполните '<% = controller.controller_name%>' и '<% = controller.action_name%>' или что бы они ни закончили. – rfunduk

1

Я видел ваш комментарий @thenduks.

На самом деле существует метод:

controller.controller_name 

, которая возвращает имя контроллера.

+0

Спасибо. Именно то, что я искал. Просто нашел страницу в документации об этом тоже. –