Ruby on rails RubyonRails中是否存在视图层对象?
我被要求绘制序列图来表示RubyonRails中的MVC模式。Ruby on rails RubyonRails中是否存在视图层对象?,ruby-on-rails,model-view-controller,sequence-diagram,Ruby On Rails,Model View Controller,Sequence Diagram,我被要求绘制序列图来表示RubyonRails中的MVC模式。 由于序列图是一个“对象图””,模型、控制器、视图应该是对象。在RubyonRails中,有模型、控制器的对象,但rails中有“视图对象”吗?rails中的视图对象在那里,但它们隐藏在模板基础结构后面 当控制器对象中的操作方法想要呈现页面时(通过显式调用render或通过返回隐式调用),Rails基础结构调用ActionView::TemplateHandlers的子类,传入.erb模板和控制器中设置的任何实例变量。模板处理程序解析
由于序列图是一个“对象图””,模型、控制器、视图应该是对象。在RubyonRails中,有模型、控制器的对象,但rails中有“视图对象”吗?rails中的视图对象在那里,但它们隐藏在模板基础结构后面 当控制器对象中的操作方法想要呈现页面时(通过显式调用
render
或通过返回隐式调用),Rails基础结构调用ActionView::TemplateHandlers
的子类,传入.erb
模板和控制器中设置的任何实例变量。模板处理程序解析出HTML位,找到嵌入在
标记中的ruby位,并从中构建一个对象。然后调用对象中的一个方法来进行渲染。您可以在视图中的代码出错时生成的堆栈跟踪中看到这方面的证据。我通过将
放在视图中生成了以下错误:
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'
...
方法\u app\u views\u home\u index\u html\u erb\uuu\uu 2383790952439350653\u 70222507697420
在运行时由ActionView
生成
结果是,您可以将那些
.erb
模板视为MVC中的视图对象。如果您定义了帮助器方法来帮助渲染过程,那么它们也是视图层的一部分。Rails中的视图对象在那里,但它们隐藏在模板基础结构后面
当控制器对象中的操作方法想要呈现页面时(通过显式调用render
或通过返回隐式调用),Rails基础结构调用ActionView::TemplateHandlers
的子类,传入.erb
模板和控制器中设置的任何实例变量。模板处理程序解析出HTML位,找到嵌入在
标记中的ruby位,并从中构建一个对象。然后调用对象中的一个方法来进行渲染。您可以在视图中的代码出错时生成的堆栈跟踪中看到这方面的证据。我通过将
放在视图中生成了以下错误:
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'
...
方法\u app\u views\u home\u index\u html\u erb\uuu\uu 2383790952439350653\u 70222507697420
在运行时由ActionView
生成
结果是,您可以将那些
.erb
模板视为MVC中的视图对象。如果已定义帮助器方法来帮助渲染过程,则它们也是视图层的一部分。RoR没有视图。它只有模板。类似于它没有模型层,只有一组活动记录实例。RoR没有视图。它只有模板。类似于它没有模型层,只有一组活动记录实例。