質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

582閲覧

erbファイル内での <% %> <%= %> の使い方について

mkk

総合スコア378

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/08/08 09:06

Progeteでrailsを勉強中なのですが、erbファイルの中で使う
<% %> や <%= %> での式展開?で分からない部分があります。

私の今の認識では

<% %> で展開すると書かれている内容をそのままRubyコードとして実行する

 例) <% text = "テストテキスト" %>

 

<%= %> で展開すると、変数に格納されている中身を取り出して表示する

 例) <%= text %>
=> テストテキスト と表示される

と考えています。

ここからが分からない部分なのですが、erbファイルの中でlink_toを使う場合に
なぜ <%= %> で囲む必要があるのか?という点です。
eachなどを使う時にも<% %>でできるのに、なぜlink_toは違うのか・・・
恐らく私の認識が何らか間違っているのかと思いますが、ググってみても
一般的な展開のルールしか見つかりませんでした。

結果から予測すると、<%= %>で展開するかどうかは、結果的にhtmlのコードに現れるか?ということでしょうか?
変数に代入の場合はhtmlコード上には現れませんが、link_toで指定するとaタグとしてhtmlコードに載るから・・・?
今後式展開をする際に、この場合はどちらを使えばいいのかと判断に迷いそうです。
ご存知の方は教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<%= %> で展開すると、変数に格納されている中身を取り出して表示する

この認識が微妙に違って、中に書かれた式の結果を出力する、のです。

で、link_toは、<a>タグが書かれたHTMLを返すメソッドなので(他のメソッド内で使って、さらに大きなHTML構造を作るのにも使えます)、出力するための<%=で書く必要があります。

投稿2020/08/08 09:09

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/08/08 09:10

eachの場合、「オブジェクト自身」が返り値となります。この返り値を出力したければ<%=ですが、通常は不要なので=は書きません。
mkk

2020/08/08 09:14

スッキリ納得です! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問