2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】render

Last updated at Posted at 2020-03-06

#render
htmlを分割します。
render というRailsのメソッドを使用して、htmlを別ファイルに分割することができます。

<h1>
<%= render "layouts/header" %>
</h1>

↓参照

app/views/layouts/_header.html.erb
<header class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>

##render "○○○"

app/views/messages/index.html.erb
.menu
  = render "layouts/menu"
// これはlayoutsフォルダにある_menu.html.hamlにいく

.view
  = render "view"
///これは同じmessagesフォルダにある_view.html.hamlにいく

##コントローラ内でrenderを使用する

controllers.rb
def index

  render action: :new

end

上記の様にコードを記載するとnewアクションに対応するviewを表示することができます。

controllers.rb
def index

  render template: "user/new"

end

この様に記載すると違うコントローラ内のアクションを取り出すこともできます。

##パーシャルにローカル変数を渡したいとき

index.html.erb
#中略
<%= render partial: 'index_body', locals: { index: @index } %>
            パーシャル名  ローカル変数名: インスタンス変数名
#省略形
<%= render 'index_body', index: @index %>
_index.body.html.erb
 <div class="media-body">
  <ul class="list-inline">
    <li>
      <%= link_to app_path do %>
       <i class="fa fa-reply" aria-hidden="true"></i>一覧ページへ戻る
      <% end %>
    </li>
  </ul>
    ↓ ココに注目
  <h2><%= index.name %></h2>
  <h3><%= index.display_price %></h3>
  <p><%= index.description %></p>

(以下、省略)
 </div>

localsオプションを使用することで、@indexというインスタンス変数をindexというローカル変数にした状態で_index_body.heml.erbに渡すことができます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?