概要

RailsのViewファイルの中でもレイアウトなどで、このレイアウトを呼び出しているコントローラ名やアクション名によって表示の一部分を変えたいということがあります。

ここでは、Viewでコントローラ名とアクション名を知る方法について説明します。

Viewでの取得

コントローラ名とアクション名はある変数に代入されています。

なので、コントローラ名を知りたいという場合はこのようにして取得します。

<%= controller.controller_name %>

アクション名はこのようにして取得します。

<%= controller.action_name %>

Controllerでの取得

Controller内では、もっと短く書くことができます。

コントローラ名はこのようにして取得します。

controller_name

アクション名はこのようにして取得します。

action_name

Controller内でコントローラ名やアクション名を取得したいという場合はあまりないと思います。

もしこれらを取得したいという場合には、そもそもアクション用のメソッドでどのアクションが呼び出されているかを特定できるので、設計に問題のある可能性が高いです。

Modelでの取得

Modelでは、コントローラ名やアクション名を取得できないようです。

もしModelから取得したいと思えるような状況は、まずないでしょうし、機能の分離のためにもModelでコントローラ名を取得して処理を分けるというのいうのは良くないと思うので、Modelからコントローラ名やアクション名を取得したいということがあるのであれば、設計が悪いと思うので見直した方がいいでしょう。

まとめ

何度も調べているので、思い切って自分用にまとめました。

同じことを調べている誰かの参考になれば幸いです。