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

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

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

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

Q&A

解決済

1回答

1931閲覧

【Progate Rails 一覧から詳細に飛ぶ、リンクを作ろう】何故、<%= link_to(#{user.name},"/users/#{user.id}") %>は駄目なのか?

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2018/12/18 02:33

編集2018/12/18 02:42

こんにちは、ProgateでRailsの学習をしています。

一覧ページから詳細ページに飛ぶリンクを作るところで躓きました。

なぜ、以下のようになるのでしょうか?

× <%= link_to(#{user.name},"/users/#{user.id}") %>

○ <%= link_to(user.name,"/users/#{user.id}") %>

link_toで囲う、前半です。

userは変数ですよね?
変数なのに、#{}で囲まないのは不思議です。

慣習でしょうか?

index.html.erb

1<div class="main users-index"> 2 <div class="container"> 3 <h1 class="users-heading">ユーザー一覧</h1> 4 <% @users.each do |user| %> 5 <div class="users-index-item"> 6 <div class="user-right"> 7 <!-- 以下のユーザー名を、ユーザー詳細ページへのリンクに書き換えてください --> 8 <%= link_to(user.name,"/users/#{user.id}") %> 9 </div> 10 </div> 11 <% end %> 12 </div> 13</div> 14

users.controller.rb

1class UsersController < ApplicationController 2 def index 3 @users = User.all 4 end 5 6 # showアクションを追加してください 7 def show 8 @user = User.find_by(id: params[:id] ) 9 end 10 11 12end

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

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

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

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

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

guest

回答1

0

ベストアンサー

<%= %>で囲むと、その中でRubyのコードを展開することができます。
したがって変数を展開することもできます(user.nameがエラーにならなかったのはそのためです)。

#{}は式展開と言って、
文字列の中でRubyのコードを動かしたい場合に使えます。

Ruby

1name = "hoge" 2p "#{name} san" #=> "hoge san"

it112さんの場合、

× <%= link_to(#{user.name},"/users/#{user.id}") %>

ダブルクオーテーションで囲んでいないのでうまくいかなかったのだと思います。

投稿2018/12/18 03:47

troch

総合スコア349

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

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

退会済みユーザー

退会済みユーザー

2018/12/18 04:02 編集

回答ありがとうございます!! どうやら、link_toは複数の書き方があるようですね。 link_toの書き方は、以下の二通りしかないと思っていました。 link_to(変数,"url") link_to("文字","url") 今回、 link_to("{変数}","url") の存在を知ることができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問