Rails link_toメソッドをブロックにして、要素をネストさせる方法

rails

こんにちは。菜笑なえです。
今回は「Rails link_toメソッドをブロックにして、要素をネストさせる方法」という内容で書いていきます。

事象

一行で書いていたlink_to を、ブロックにして要素をで囲もうとした時のミスについて。

コード状況

一行で書いていたとき。

= link_to(表示名, root_path)

これをブロックにしたいと思い書いたもの。

= link_to(表示名, root_path) do
  %p ネスト

NoMethodError と言われました。

解決方法

こちらで解決です。

= link_to root_path do
  = 表示名
  %p ネスト

クラスをつけたい場合はこちら。

= link_to root_path, class: 'link' do
  = 表示名
  %p ネスト

上記はHamlですがERBの場合はこちら。

<%= link_to root_path, class: 'link' do %>
  表示名
  <p>ネスト</p>
<% end %>

ブロックにしたら表示名は、ブロックの中に書くことです。

おわりに

普段はERBを使用して、link_to をブロックで書くこともよくあるんですが、Hamlになった途端あれ?となりました。

結局はどちらで書いても同じなので、落ち着いてコードを見ていきたいと思います。

参考文献

ありがとうございます!

SNS

Twitter:@nae310_
Instagram:310nae