0

Ruby on rails で MVC パターンを表すシーケンス図を描いてほしいと依頼されました。シーケンス図は「オブジェクト図」であるため、モデル、コントローラー、ビューはオブジェクトである必要があります。Ruby on railsにはモデル、コントローラーのオブジェクトがありますが、レールに「ビューオブジェクト」はありますか?

4

1 に答える 1

3

Rails のビュー オブジェクトはそこにありますが、テンプレート インフラストラクチャの背後に隠されています。

コントローラー オブジェクトのアクション メソッドがページをレンダリングする場合 (明示的に呼び出すrenderか、暗黙的に返すことにより)、Rails インフラストラクチャは のサブクラスを呼び出し、テンプレートとコントローラーに設定されたインスタンス変数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 のビュー オブジェクトと考えることができます。レンダリング プロセスを支援するヘルパー メソッドが定義されている場合、それらもビュー レイヤーの一部です。

于 2013-04-03T17:17:56.530 に答える