TIL/20211017/RubyOnRails Route/Controller/View


設定


リンク参照

Rails哲学

  • DRY:同じコードを繰り返さない
  • 慣習:機能ソリューションの提供によりプロファイルを削減
  • REST:リソースおよび標準HTTP要求を満たすWebを開発
  • MVC(モデル、ビュー、コントローラアーキテクチャ)


  • Models:データベース・テーブルと対話するルールの管理

  • Views:ユーザーインタフェース(htmlファイル)

  • コントローラコントローラコントローラ:モデルとビューを接続するロール
  • ガイドエレメント

  • ActionPack:アクションコントローラとアクションビューを含むGem(MVCのVC)
    アクションコントローラ:レール要求処理ex.セッション管理、テンプレートレンダリング、リダイレクト管理
    ActionDispatch:Webリクエストを受け入れ、必要な場所に接続
    ActionView:ビュー管理ex.テンプレートレンダリング、ネストフォーム、彫刻テンプレート、AJAXサポート管理
  • ActionMailer:組み込みメールサービスフレームワーク
  • Active Model:アクションパッケージサービスとORM GEMインタフェースの定義
  • Active Record:データ抽象、デフォルトCRUD機能、オブジェクト間関係定義機能
  • Active Resource:WebベースのリソースをローカルオブジェクトにマッピングするCRUD
  • ActiveSupport:Railsが使用するユーティリティと標準ルビー拡張セット
  • Railties:Railzコード接続複数のフレームワークとプラグイン
  • ファイル構造が複雑なのは、CoCの各要素の役割が異なるためです.
    要素の役割を特定し、ルールに基づいてコードを記述する際の最高の生産性を確保します.

    Railsの開発に必要な部分


    1.app/controllers:MVCモードのコントローラのコード
    2.app/views:MVCモードのviewには、対応するコードが含まれています.viewとcontroller内部のacrionは一対一です
    3.app/models:MVCモードのモデルキャラクタ.内部データベースに関連するテーブルの分類
    4.config/routes.rb:configディレクトリに含まれるルーティング.rbファイルはクライアント要求urlを特定のコントローラの操作と一致させる
    5.db/migrate:ここでファイル形式でテーブルを作成するためのコードを生成する
    6.db/schema.rb:実際には、dbでテーブルを作成するときに作成されるファイルで、ここでサーフェスを確認できます.
    7.vendor/Gemfile:RubyライブラリはGemと呼ばれ、ここでGemを作成しRailsプロジェクトに追加できます.

    REST

  • リソース識別子(例えばURL)を用いてリソースを表す
  • システムコンポーネント間でリソース状態を交換
  • プライマリコマンド


    1.helloというrailsプロジェクト作成コマンド
    rails new hello cmdウィンドウに入力
  • 実行コマンド(3000個の内蔵プライマリ・サーバ・ポートを操作)
    rails s
  • サーバ上のページの駆動方法

  • httpリクエスト:routeをアドレスUriで解析します.rb
  • 内部処理要求:controller
  • 応答ページリクエスト:view
  • Railsを使用したページの作成


    1.コントローラファイルの作成
    $ rails generate controller home
    実行後app/controllers/home controller.rbファイルの作成
    1.viewsディレクトリのサブディレクトリはコントローラ名と同じです.
    2.ディレクトリに含まれるファイル名がaction名と同じ場合、コントローラとビューは自動的に関連付けられます.
    2.コントローラコードの作成
    defとendの間の内容をactionと呼ぶ
    ビューに同じ名前を自動的にマッチさせる
    Sorailsではactionはサービスが操作可能な行為です
    動作は、ユーザが見ることができるビューまたはアクションロジックです.
    3.ビューコードの作成
    index.html.htmlコードをerbファイルに追加
    4.ルーティング設定
    config/routes.rbファイルにコードを追加
    Rails.application.routes.draw do
        # 코드 시작
        root "home#index" 
        get "home/index" => "home#index"
        # 코드 끝
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    end
    説明:
    ルート「home#インデックス」である「/」がこのアドレスを要求する場合、homeコントローラに送信されるインデックス操作を示します.(get"/"=>「home#index」と同じコード)
    get方式でhome/indexアドレスを要求する場合は、homeコントローラのindex操作を使用して接続します.
    cf.ルール:Rootアドレスコントローラ#action
    コアの整理
    railsサーバにリクエストを送信すると、リクエストを送信したuri情報はroute、controller、viewの順に移動します.
    Railsプロジェクトでページを作成するには
    1.ルーティングで定義されたuri
    2.uriに関連付けられたコントローラ、action
    3.controller,actionに関連付けられたview

    データを別のページに転送


    1.フォームを介してサーバにデータを転送する(controller#action)
    2.actionのデータを関連ビューに転送して出力する

    完全なコード


    routes.rb
    Rails.application.routes.draw do
      root "home#index"
      get 'home/index'
      get 'home/next'
        # 코드 시작
        #root "home#index"
        #get "home/index" => "home#index"
        # 코드 끝
      # For details on the DSL available within this file, 
      #see http://guides.rubyonrails.org/routing.html
    end
    home_controller.rb
    class HomeController < ApplicationController
      def index
      end
    
      def next
      end
    end
    index.html.erb
    <h1>
    	Home#index
    </h1>
    <p>
    	Find me in app/views/home/index.html.erb
    </p>
    <a href="/home/next">home/next로 이동</a>
    next.html.erb
    <h1>
    	Home#next
    </h1>
    <p>
    	Find me in app/views/home/next.html.erb
    </p>
    <a href="/home/index">home/index 이동</a>

    参考資料


    一望できるルビーレール:リンク