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
を決め打ちで書かなくてはいけない
今のところ解消方法が見つかっていないです。