rails application_controller using before_action is not processed

时间:2016-04-07 10:34:03

标签: ruby-on-rails ruby ruby-on-rails-4

I wan't to use the before_action in application_controller.rb and then some skip_before_actions ...

bit the defined function is not called ...

application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  layout "application"

  before_action :user_logged_in, :set_locale

  private

  def set_locale
     I18n.locale = params[:locale] || I18n.default_locale
  end

  # Prüft ob ein Nutzer eingeloggt ist.
  def user_logged_in

    puts "HA"

   if session[:user_id].nil?
     flash[:error] = "error"
      redirect_to :controller => :startsites, :action => :index
   else
      flash[:error] = "ok"
      redirect_to :controller => :startsites, :action => :index
   end

  end
end

The puts "HA" in user_logged_in is not shown ...

and in some controllers I tried to use this:

class MoviesController < ActionController::Base
   skip_before_action :user_logged_in, only: [:index, :show]

also not working ... why?

1 个答案:

答案 0 :(得分:2)

Where are you looking for the puts? If you were to call the Rails logger instead, it would work.

Try to insert a binding.pry instead of the puts and see what happens (you obviously need to have pry installed on your machine)