2012年1月27日金曜日

[Rails3] コントローラの namespace を取得する

実行環境:
ruby 1.9.3
Rails 3.1.3
コントローラの名前は controller.controller_name で取得できますが namespace までは取得できないので、UsersController の場合も Admin::UsersController の場合も同じ users が返ってくる。

namespace まで一緒にとりたい場合は controller.controller_path を使います。 admin/users が返ってきます。
  def namespace
    controller.controller_path.split('/')[-2]    # admin
  end

もしくは controller.class.name でも Admin::UsersController のように namespace 付きで得られます。
  def namespace
    controller.class.name.split('::')[-2]        # Admin
  end
どちらも namespace がついてない場合は nil が返ります。

0 件のコメント:

コメントを投稿