2

モデル、ビュー、およびコントローラーがアプリケーションで果たすさまざまな役割を理解していますが、それらがどのように相互にリンクされているかを理解しています。たとえば、JavaScript ファイルを HTML ファイルにリンクする場合、「src」参照のタグが必要です。

Railsを学んで以来、私はそれらがリンクされていると言われてきましたが、どのようにではありません.

モデル、ビュー、およびコントローラーは実際にどのようにリンクされているのでしょうか? また、MVC や特に Rails では「src」などのようなものが必要ないのはなぜですか?

4

2 に答える 2

8

基本的に、すべてルート コントローラーとアクションを介してリンクされています。

ルート ファイル (your_app_root/config 内の routes.rb ファイル) は、着信 URL を効果的にインターセプトし、その URL をコントローラー/アクションにマップします (実際には、Nginx などの Web サーバーによって行われ、次のような方法でリクエストを Rails アプリに渡します)。ユニコーンですが、それはまったく別の質問です)。

したがって、標準の HTML サイトのセットアップでは、home というフォルダーがあり、そのフォルダーに index.html がある場合があります。

そのため、 some_url/home/index に移動すると、ブラウザーでレンダリングされた index.html ファイルの内容が取得されます。

RoR でこれを機能させるには、コレクションの get リクエストを定義するルートが必要です (複数のパラメーターが渡されるか、パラメーターが渡されません)。

それはこのように見えるかもしれません

YourApp::Application.routes.draw do
  get 'home', to: 'home#index', as: :home
  # etc...

some_url/home に移動すると、そのルートはブラウザーをホームコントローラーのインデックスアクションに接続します

ホームコントローラーのインデックスアクションは、空のアクションにすることができます

class HomeController < ApplicationController
    def index
    end
end

また、app/views/home フォルダーに index.html.erb がある場合、ActionController が HTML、css、javascript、json、または XML にレンダリングするように指示したものを変換すると、そのファイルが自動的にレンダリングされます。リソース ルートを使用し、受信したリクエストは XML または JSON リクエストであり、結果のデータをブラウザに送り返します。

データベースから表示されるデータを取得したい場合、コントローラー アクションは、そのデータを取得し、ビューが erb タグで使用できるオブジェクト (@ 記号で示されるインスタンス変数) に詰め込む責任があります。

例えば

class HomeController < ApplicationController
  def index
    @some_records = SomeModel.all
  end
end

これは、次のように index.html.erb ファイルで使用できます。

<ul>
  <% @some_records.each do |rec| %>
    <li> A record: <%=rec.some_method%> </li>
  <% end %>
</ul>

ルートがあるので、ルート名をリンクやボタンのパスとして使用して、ブラウザーからサーバーにデータをポストし、プロセス全体を最初からやり直すことができます。

これは、すべてがどのように結びついているかを正確に説明するものではありませんが、すべてがどのように発生するかを理解するには十分に近いものです。

于 2013-08-26T01:57:44.493 に答える
0

モデル - ビュー - コントローラーは、Rails アプリケーションを編成するソフトウェア設計パターンです。ソフトウェア アーキテクトの観点からは、コードを整理する方法を提供するだけの抽象化です。Rails API のクラス階層で MVC デザイン パターンを確認できます。特に、ActionController (コントローラー)、ActionView (ビュー)、および ActiveRecord (モデル) は、Web アプリケーションのコンポーネントとして使用するためにサブクラス化できるオブジェクトです。 . また、Rails アプリケーションのファイル構造に反映された MVC デザイン パターンを確認することもできます。ここには、モデル、コントローラー、およびビューのフォルダーがあります。Rails のソース コードを深く掘り下げない限り、モデル、コントローラー、およびビューを結び付ける実際のコードは表示されません。

モデル、コントローラー、およびビューを結び付ける Rack ミドルウェアの詳細な技術紹介については、アクション ディスパッチャーについて説明しているRailsGuide: Rails on Rackを参照してください。

Action Dispatcher は、モデル、コントローラー、およびビュー オブジェクトを統合する作業を行います。MVC 設計パターンに従ってコードを編成するという Rails の規則に従うと、Rails がコードを「リンク」するすべての作業を行います。MVC の断片を一緒に「リンク」するコードを実際に目にすることはありません。

MVC (および Rails に関するその他すべて) のより完全な説明については、私の詳細な記事を参照してください。

Ruby on Rails とは?

Rails を理解するには、ソフトウェア アーキテクチャを含むいくつかの観点から見る必要があります。

于 2013-08-26T02:00:17.257 に答える