LoginSignup
1
0

More than 5 years have passed since last update.

Rails で view から controller のファイルパスを得る方法

Posted at

Rails 5.0.1 にて

"app/controllers/#{controller.class.name.underscore}.rb"

仕組み

view では controller というメソッドで controller のインスタンスが取れる。

ので、それの class 名をとって ( .class.name )、ファイル名(拡張子なし)にするために underscore してみる。これにディレクトリと拡張子を追加することで、通常の命名規則でやっている限りは解決できる。

本当に String#underscore でいいのか

AbsctractController::Base#controller_path にて、下記のように 「"Controller" を消す && underscore にする」で実装されているので、これと同じようにやれば問題ないはず

    def controller_path
      @controller_path ||= name.sub(/Controller$/, ''.freeze).underscore unless anonymous?
    end

イマイチな点

  • app/controllers/ を決め打ちで書かなくてはいけない
  • .rb を決め打ちで書かなくてはいけない

今のところ解消方法が見つかっていないです。

1
0
1

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
1
0