

controllerの中で`current_page?(hoge_path)`を使うと以下の様なエラーになってしまいます。

[code]

    undefined method `current_page?'
    
[/code]

controllerの中ではどのようにpathを判定すればいいのでしょうか


CC BY-SA 3.0
2015-12-09T03:01:23.453
19781
2016-11-01T03:10:17.010
9149
question
ruby-on-rails ruby
railsのcontrollerの中でcurrent_page?を使いたい


ある`controller`の`action`がどのようなURLになるのか調べるには`url_for`を利用します。  
`xxxx_path`と比較するなら以下のようになるかと思います。

[code]

    class UsersController < ApplicationController
      def index
        p users_path == url_for(controller: controller_name, action: action_name, only_path: true)
      end
    end
    
[/code]


CC BY-SA 3.0
2015-12-09T03:58:23.740
19786
2015-12-09T03:58:23.740
2646
19781
answer


Controllerの中では `ApplicationController.helpers.xxxxxxxx` のように呼び出せば helper
を利用することが出来ますが、`current_page?` は動作しません。

やりたいことは現在のコントローラ・アクションをチェックすることだと思いますので、

  * controller_name
  * action_name

で判定してはいかがでしょうか?


CC BY-SA 3.0
2015-12-09T03:58:26.980
19787
2015-12-09T03:58:26.980
76
19781
answer


こういうアプローチのお行儀がいいかどうかは別として、`ActionView::Helpers::UrlHelper`をincludeすれば`current_page?`は使えますね。

[code]

    class UsersController < ApplicationController
      include ActionView::Helpers::UrlHelper
    
      def index
        Rails.logger.debug current_page?(users_path) # => true
        @users = User.all
      end
    end
    
[/code]


CC BY-SA 3.0
2015-12-09T05:47:04.407
19793
2015-12-09T05:47:04.407
85
19781
answer