Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails中是否存在视图层对象?_Ruby On Rails_Model View Controller_Sequence Diagram - Fatal编程技术网

Ruby on rails RubyonRails中是否存在视图层对象?

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中的MVC模式。
由于序列图是一个“对象图””,模型、控制器、视图应该是对象。在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没有视图。它只有模板。类似于它没有模型层,只有一组活动记录实例。