link_toの使い方

TECH::CAMPで勉強し始めて12週目。

 

またまた、基本を忘れているのでアウトプットして頭に焼き付けます。

 

今回は、これまたよく使う

link_toを使用したリンクの作成。

カリキュラムでは、

  • <a>ダグは使わないようにしましょう!
  • リンク先はパスを指定する方法で記載しましょう!

とあったので、/posts/index とか書きがちなところを頑張ってパスで記載します。

 

基本のlink_to

今回はerbで書きます。

<%= link_to "新規投稿", new_post_path %>

この記載で下図のようなようなビューになります。

f:id:atsukofu:20200526223250p:plain

<a>タグと同じようになりましたね。

 

 

広範囲のlink_to

例えば、ユーザー名・ユーザー画像が並んでいて、

その範囲のどこをクリックしてもリンク先に飛べるような、

広範囲を囲うlink_toです。

<%= link_to user_path(current_user) do %>
<%= current_user.nickname %>
<%= image_tag current_user.image.thumb_user.url %>
<% end %>

クリックできるようにしたい範囲を

<%= link_to  リンク先のパス  do%>

<% end %>

で囲います。

基本のlink_toには無かった、「do」を付けてやる必要があります。

そしてブラウザに表示する部分はlink_toタグの中ではなく、

<%= link_to  リンク先のパス  do%>

<% end %>

の間に書いてやるようにします。

すると、下図の画像とユーザー名どちらをクリックしても

同じリンク先に飛ばせるので、

クリックできる範囲が広がって、使いやすくなりますね。

f:id:atsukofu:20200510001722p:plain

 

 

 

パスのidの指定

users_controller で

@user = User.find_by(id: params[:id])

と定義している前提です。

 

<%= link_to "編集する", edit_user_registration_path(@user) %>

パスの後に(@user)と記載してやることで、 

どのユーザーのidかを指定することができます。

 

ちなみにcurrent_userのid指定なら、下記のようにも書けます。

<%= link_to "編集する", edit_user_registration_path(current_user) %>

 

 

アソシエーションを組んでいるモデルのパスを指定

<%= link_to @post.user.nickname, user_path(@post.user) %>

 投稿者のuser id を指定しています。

アソシエーション便利やなあ。

 

 

他にもパターン見つけたら追記します。

今日はここまで。