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内で書くには#
を利用します。
一行のコメント
<% # これはコメントです %>
複数行のコメント
<% #
これはコメントです
これはコメントです
これはコメントです
%>