5.1 ERB

Rubyのコード埋め込む

ERBでは<% %>タグや<%= %>タグを使うことで, RubyコードをHTMLなどのコンテンツ内で実行することができます。

<h1><= @post.title %></h1>

上の例では投稿が格納されている@post変数のタイトルを表示しています。 

コントローラからの変数を受け取る

コントローラのアクション内でインスタンス変数を定義することで、そのアクションのビューで定義した変数を使うことができます。

インスタンス変数を定義するには@変数名で定義します。

app/controllers/posts_controller.rb

class PostsController < ApplicationController
  def show
    @post = Post.find(params[:id])
  end
end

app/views/posts/show.html.erb

<h1><= @post.title %></h1>

外部リソースを読み込む

スタイルシートを読み込む

スタイルシートを読み込むにはstylesheet_include_tagを利用します。引数にURLを渡すことで指定のリソースをダウンロードします。

<%= stylesheet_include_tag 'https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css' %>

生成されるタグは以下のようになります

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" >

Javascriptを読み込む

Javascriptを読み込むにはjavascript_include_tagを利用します。引数にURLを渡すことで指定のリソースをダウンロードします。

<%= javascript_include_tag 'https://code.jquery.com/jquery-3.3.1.min.js' %>

生成されるタグは以下のようになります

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" ></script>

任意のファイルを指定して描画する

任意のファイルを描画するにはrenderメソッドを利用します。renderメソッドに描画したいファイルのパスを渡すことで描画できます。

class ApplicationController < ActionController::Base
  def render_not_found_page
    render Rails.root.join('public', '404.html')
  end
end

public/404.html

<!DOCTYPE html>
<html>
  <head>
    <title>404</title>
  </head>
  <body>
    <h1>404 NOT FOUND</h1>
  </body>
</html>

上の例ではpublic/404.htmlに配置されたHTMLファイルを描画するメソッドになります。

コメントを書く

コメントをERB内で書くには#を利用します。

一行のコメント

<% # これはコメントです %>

複数行のコメント

<% #
これはコメントです
これはコメントです
これはコメントです
%>

results matching ""

    No results matching ""