6
4

More than 3 years have passed since last update.

[Rails]current_page?を活用する。

Last updated at Posted at 2021-02-18

書くこと

railsのcurrent_page?を用いた条件分岐について

環境

Ruby 2.6.5
Rails 6.0.3.4

結論

current_page?で、現在のページに指定のURLが含まれているかを判断する。

ぶち当たった課題

現在取り組んでいるポートフォリオの作成において、問い合わせフォームの作成を行うことにした。そこで、「問い合わせフォームの画面以外に」、そのリンクを設置しようとした。(具体的にはfooter)

application.html.erb
(中略)
<footer>
  お問い合わせはこちらから<br/>
  <%= link_to "お問い合わせフォーム", new_contact_path%>
</footer>
(中略)

しかし、application.html.erbに記述すると、すべてのerbページに表示されてしまうため、これではお問い合わせページにも反映されてしまう。

current_page?で条件分岐させる。

そこで、前述のcurrent_page?を公式ドキュメント
(2021/02/22追記 公式ドキュメントはこちら])で発見し、その用法のうち、

example.rb
#コントローラとアクションを指定
current_page?(controller: 'library', action: 'checkout')

こちらの記述を見つけたので、contactsコントローラーのnewアクション以外で表示するよう条件分岐させた。(2行目)

application.html.erb
<footer>
   <% unless current_page?(controller:"contacts", action: "new") %> 
     お問い合わせはこちらから<br/>
      <%= link_to "お問い合わせフォーム", new_contact_path%> 
    <% end %>
</footer>

うまくいきました。

補足

Railsドキュメントでは、

指定したURLが、現在表示されているかチェック

するために用いると書かれています。今回使用したコントローラーとアクションを指定する以外にも直接URLを指定できたりするようなので、自分の状況に応じて利用してみてください。

最後に

最後まで読んでいただき、ありがとうございます。
ソースコード、記事の書き方について「もっとこうしたほうがいいよ!」というご意見、「そこどうなっているの?」というご質問など、お待ちしております。

参考文献

6
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4