Ruby
erb
RubyOnRails

RailsでModelの中身が表示されてしまう

最近Ruby on Railsを勉強中です。

最近Railsチュートリアルを全部写経しました
https://medium.com/%E8%99%8E%E8%A6%96%E7%9C%88%E3%80%85%E3%81%A8/rails-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%92%E5%85%A8%E9%83%A8%E3%82%84%E3%81%A3%E3%81%9F%E8%A9%B1-5cead29b43f1

初心者の自分が最初にハマったことを共有したいと思います

<%= と <%の使い分けに注意しよう

Railsで開発中にModelからデータを取得してViewに渡して、Viewでごにょごにょしているときにハマりました。

スクリーンショット 2017-12-22 13.06.23.png

なぜか画面にModelの中身がまるまる表示されていました。
書いていたソースは下記になります。

<%= @articles.each do |article| %>

  <p>
    <%= link_to article.title, edit_articles_url(id: article.id) %>
    <%= article.created_at %>
    <%= link_to "Delete", articles_url(id: article.id), :method => :delete %>
  </p>

<% end %>

原因わかる方いらっしゃいますか??

原因

原因は<%= @articles.each do |article| %> と書いていたことです。
<% @articles.each do |article| %>と書けば表示されなくなります。

この際いろいろ調べて見た

https://qiita.com/chobi9999/items/a48e790952a0f183e91d

↑にあるとおり

<% 任意のコード %>
  ここのコードは評価されるだけで結果をテンプレートに返さない。
  重荷演算や制御構文の記述に利用。

<%= なんらかの値を返す式 %>
  式の評価結果をテンプレートに挿入。

ほうほう、勉強になりました。