モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)
目次目次を開く/閉じる

レイアウトおよび部分テンプレートに関するまとめ (Rails4)

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2014/06/17
最終更新最終更新
2016/10/21
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    Web3関連の開発を行っています。分散型アプリケーションが研究テーマの学生です。

    0
    ステッカーを贈るとは?

    レイアウトおよび部分テンプレートはどちらもテンプレート (*.html.erb) に共通の要素をまとめておき、任意のテンプレートから利用できるようにしておくための仕組みです。フッターやヘッダーといった大枠はレイアウト、小さなパーツは部分テンプレートというイメージで使い分けましょう。

    レイアウトの使用方法

    クラス毎に指定する方法と、アクション毎に指定する方法があります。

    app/views/layouts/my_layout.html.erb

    [ヘッダー]
    <%= yield %>
    [フッター]
    

    クラス毎に指定

    app/controllers/my_models_controller.rb

    class MyModelsController < ApplicationController
      layout 'my_layout'
      #layout false #レイアウトをなしにする場合
      ...
    

    アクション毎に指定

    class MyModelsController < ApplicationController
      before_action :set_my_model, only: [:show, :edit, :update, :destroy]
    
      # GET /my_models
      # GET /my_models.json
      def index
        @my_models = MyModel.all
        render layout: 'my_layout'
        #render layout: false #レイアウトをなしにする場合
      end
      ...
    

    複雑なレイアウトの作成方法

    "yield"を複数設置

    app/views/layouts/my_layout.html.erb

    [ヘッダー]
    <%= yield :contentA %>
    [共通コンテンツ]
    <%= yield :contentB %>
    [フッター]
    

    app/views/my_models/index.html.erb

    <% content_for :contentA do %>
    コンテンツA
    <% end %>
    <% content_for :contentB do %>
    コンテンツB
    <% end %>
    

    出力例

    [ヘッダー]
    コンテンツA
    
    [共通コンテンツ]
    コンテンツB
    
    [フッター]
    

    レイアウトのレイアウト

    複数のレイアウト間に共通の大枠の要素がある場合、レイアウトのレイアウトにまとめておくと便利です。

    app/views/layouts/my_layout.html.erb

    <% content_for :normal_layout_content do %>
    レイアウトその1
    <%= yield %>
    <% end %>
    <%= render template: 'layouts/layout_of_layout' %>
    

    app/views/layouts/my_layout2.html.erb

    <% content_for :normal_layout_content do %>
    レイアウトその2
    <%= yield %>
    <% end %>
    <%= render template: 'layouts/layout_of_layout' %>
    

    app/views/layouts/layout_of_layout.html.erb

    [ヘッダー]
    <%= yield(:normal_layout_content) %>
    [フッター]
    

    app/views/my_models/index.html.erb

    本文です。
    

    出力例

    [ヘッダー]
    レイアウトその1
    本文です。
    
    [フッター]
    

    部分テンプレートの使用方法

    app/views/my_models/_partial_template.html.erb

    ~~~~~~~~~~~~~~~~~~
    小さな共通パーツ
    <%= arg1 %>
    <%= arg2 %>
    ~~~~~~~~~~~~~~~~~~
    

    app/views/my_models/index.html.erb

    <%= render 'my_models/partial_template', arg1: 'val1', arg2: 'val2' %>
    

    出力例

    ~~~~~~~~~~~~~~~~~~
    小さな共通パーツ
    val1
    val2
    ~~~~~~~~~~~~~~~~~~
    

    繰り返しが発生する場合に便利な記法

    ページャ等で同じようなアイテムを繰り返し出力する場合、部分テンプレートを使用するとよいのは想像の通りですが、その「繰り返し」をeachで実現する場合と比較して便利な記法が存在しています。

    app/views/my_models/_my_model.html.erb (MyModelを表示するのための部分テンプレート)

    <tr><td><%= arg1 %>:<%= my_model.id %></td></tr>
    

    app/views/my_models/index.html.erb

    <table>
    <%= render @my_models, arg1: 'val1' %>
    </table>
    

    出力例

    <table>
    <tr><td>val1:1</td></tr>
    <tr><td>val1:2</td></tr>
    <tr><td>val1:3</td></tr>
    </table>
    

    @my_models に格納されているモデルをもとに自動で部分テンプレートが選択されます。今回の例では"MyModel"のみですので、すべて"my_models/_my_model.html.erb"が選択されました。

    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    Web3関連の開発を行っています。分散型アプリケーションが研究テーマの学生です。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • Ruby コードスニペット (正規表現)
        sample.rb str = "001: This is a string." var1,var2 = 2,3 # 'EOS'とすると#{}による変数展開がなされない (%03dは展開される) doc = (<<"EOS" % var1) # 括弧は省略可。要は<<"EOS"の次の行からEOSまで。(参: <<-"EOS"とすると前に空白...
        だいふくうさぎだいふくうさぎ5/13/2018に更新
        いいねアイコン画像0
      • OAuthを用いずにTwitterに自動投稿する (回数制限あり, Selenium with Ruby)
        Seleniumを用いて、OAuthを用いずにTwitterに自動投稿するRubyスクリプトを記述してみます。連続で複数回実行すると、ボット判定としてキャプチャ認証が発生します。その認証までは通過できませんので悪しからず。また、Twitterの仕様変更次第ではDOMの構造が変化するため、下記サンプルは機能しなくなる恐れが有ります。 twitter_post.rb #!/usr/bin/ruby r...
      • Ruby における日本語のエンコーディング
        日本語を含めて多言語対応する際には、Asciiコード以外の文字コードセットが必要になります。日本語が主となる場合、よく使われる文字セットにはUnicode, Shift_JIS, EUC-JPがあります。このうち Unicode だけは特殊であり、世界中のあらゆる文字を収録しようとしていることから 1 文字を表現するために必要なバイト数が大きくなってしまっています。そのため Unicode のうち...
        だいふくうさぎだいふくうさぎ4/21/2017に更新
        いいねアイコン画像0
      • Rails3ビューテンプレートの基本的な使用方法 (Ruby)
        Railsでは、ERB (eRuby (テキストファイルにRubyスクリプトを埋込む書式の仕様) をRubyで実装したもの) を用いてHTML内にRubyスクリプトを埋込むことができます。 <% %> で囲むと出力されません (if-elseなど制御構文を記述します) <%= %> で囲むとエスケープ出力されます <%== %> で囲むとエスケープされずに...
        ほんわかパンダほんわかパンダ10/21/2016に更新
        いいねアイコン画像0
      • ビューヘルパーの作成方法 (Rails4)
        事前準備 $ rails generate scaffold myModel field1:string field2:integer field3:date field4:boolean $ rake db:migrate config/application.rb module MyApp class Application < Rails::Application ... ...
        クロクロ10/21/2016に更新
        いいねアイコン画像0