Реализация обработчиков шаблонов Rails 3 - PullRequest
4 голосов
/ 16 июня 2011

Похоже, что не так много документации по обработчикам шаблонов Rails. Есть включенные обработчики, такие как RJS, ERB и Builder, которые предлагают некоторую помощь.

Я пытаюсь реализовать свой собственный, и мне это удалось, хотя и с небольшим количеством странного кода, или, возможно, есть кое-что, что я не совсем понимаю.

class MyHandler < ActionView::Template::Handler
  def call(template)
    template.source.inspect
  end
end

Так что странно, что я должен вызвать inspect, иначе Rails попытается оценить строку как код Ruby.

У меня сложилось впечатление, что это то, что сделал include ActionView::...::Compilable (чего я не включил в свой код).

Теперь, если я сделаю свой шаблон "компилируемым" (используя оператор include...), он все равно будет искать метод call вместо метода compile.

Так может ли кто-нибудь объяснить мне немного больше о том, как это работает?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 17 апреля 2012

Я только что сам прошел через эту проблему.По существу, rails ожидает, что метод визуализации .call вернет код ruby, который будет отображать ваш шаблон.Затем динамически генерирует метод , который запускает этот код и внедряет его в модуль.

В модуль включены все помощники по URL / приложениям, что означает, что они находятся в области действия дляшаблон.

Таким образом, в ответ на ваш вопрос решение для .call вернуть некоторый код ruby, который выводит ваш обработанный шаблон в виде строки, или для того, чтобы он отобразил код ruby, который вызывает ваш механизм шаблонов.

0 голосов
/ 22 июля 2011

Проверьте Наклон и Temple , я многое узнал о движках шаблонов, читающих их код.

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