Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【Railsアプリケーション】renderメソッドを利用しない方法

f:id:mTakata:20200407002832j:plain

こんにちは。当ページにアクセスしてくださり、ありがとうございます。

 

この記事は、プログラミング言語「Ruby」のフレームワーク「Rails」でもよく使用するメソッド「render」メソッドを使用しない別の方法を紹介致します

 

例題

以下のようなビューファイルがあります。

index.html.erb

```Rails(Ruby)
<div id="main-content" class="col-sm-9">
<h3 class="page-name"><%= link_to 'Post', posts_path %>
</h3>
<div class="row">
<%= render @posts %>
</div>
</div> ``` 


_post.html.erb
 

```Rails(Ruby)
<div class="col-sm-3 single-post-card" id=<%= post_path(post.id) %>>
<div class="card">
<div class="card-block">
<h4 class="post-text">
<%= truncate(post.title, :length => 60) %>
</h4>

<div class="post-content">
<div class="posted-by">Posted by <%= post.user.name %>
</div>
<h3><%= post.title %></h3>
<p><%= post.content %></p>
<%= link_to "I'm interested", post_path(post.id), class: 'interested' %>
</div>
</div>
</div>
</div>
``` 

 このとき、4行目のrenderメソッドを利用せずに同じ表示を得るためには、4行目以降をどのように書き換えれば良いでしょうか?

 

_post.html.erbの記述を参考にしてください。

 

解説

index.html.erb

<div id="main-content" class="col-sm-9">

  <h3 class="page-name"><%= link_to 'Post', posts_path %></h3>

  <div class="row">

    <% @posts.each do |post| %>

      <div class="col-sm-3 single-post-card" id=<%= post_path(post.id) %>>

        <div class="card">

          <div class="card-block">

            <h4 class="post-text">

              <%= truncate(post.title, :length => 60) %>

            </h4>

           <div class="post-content">

             <div class="posted-by">Posted by <%= post.user.name %></div>

                 <h3><%= post.title %></h3>

                 <p><%= post.content %></p>

                 <%= link_to "I'm interested", post_path(post.id), class: 'interested' %>

            </div>

          </div>

        </div>

      </div>

    <% end %>

  </div>

</div>

以上のように、インスタンス変数@postseach文を使って、ループさせることができます。

 

参考になれば、幸いです。

読んで頂き、ありがとうございました。