0

Меня попросят нарисовать диаграмму последовательности, чтобы представить шаблон MVC в Ruby on rails. Поскольку диаграммы последовательности представляют собой «», », модели, контроллеры, виды должны быть объектами. В Ruby на рельсах есть объекты моделей, контроллеров, но есть ли какие-либо «объекты вида» в рельсах?Любые объекты уровня изображения существуют в Ruby on rails?

+0

RoR не имеет просмотров. У него есть только шаблоны. Kinda так же, как у него нет уровня модели, только набор активных экземпляров записей. –

ответ

3

Объекты представления в Rails есть, но они скрыты за инфраструктурой шаблонов.

Когда метод действия в объекте контроллера хочет отобразить страницу - либо явный вызов render или неявно путем возврата - Рельсы инфраструктуры звонков в подкласс ActionView::TemplateHandlers, переходящие в вашем .erb шаблоне и любой переменный экземпляр устанавливаются в контроллер. Обработчики шаблонов анализируют биты HTML, находят рубиновые биты, встроенные в теги <% %>, и строят объект из него. Затем он вызывает метод в объекте для выполнения рендеринга. Вы можете увидеть доказательства этого в трассировках стека, которые генерируются при возникновении ошибки в коде в вашем представлении. Я произвел ошибку ниже, помещая <% 0/0 %> в виде:

divided by 0 (ActionView::Template::Error) 
    ./app/views/home/index.html.erb:9:in `/' 
    ./app/views/home/index.html.erb:9:in `block in _app_views_home_index_html_erb___2383790952439350653_70222507697420' 
    /Users/dpassage/.rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.2.11/lib/action_view/helpers/capture_helper.rb:40:in `block in capture' 
    /Users/dpassage/.rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.2.11/lib/action_view/helpers/capture_helper.rb:187:in `with_output_buffer' 
... 

Метод _app_views_home_index_html_erb___2383790952439350653_70222507697420 был создан во время выполнения ActionView.

Результат состоит в том, что вы можете думать о тех шаблонах .erb как объекты вида в MVC. Если у вас есть вспомогательные методы, определенные для помощи в процессе рендеринга, они также являются частью слоя представления.

 Смежные вопросы

  • Нет связанных вопросов^_^