2014-11-29 9 views
14
funktioniert

ich habe ein Problem mit der skip_before Aktion:Rails überspringen vor der Aktion nicht

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 

    before_action :require_login 
    before_action :inc_cookies 

    def inc_cookies 
    if cookies[:token] != nil 
     @name = cookies[:name] 
     @surname = cookies[:surname] 
     @user_roomate = cookies[:roomate] 
    end 
    end 

    def require_login 
    if cookies[:token] == nil 
     puts "No token" 
     redirect_to '/' 
    end 


    end 
end 

und meine anderen Controller:

class UsersController < ApplicationController 
skip_before_action :require_login, :except => [:landing, :connect, :create] 
end 

Ich weiß nicht, warum, aber wenn ich bin auf der Wurzel (die: landing-Aktion von UsersController), Rails versuchen, die require_login zu übergeben ... Ich habe etwas mit diesem Filter missionertood, oder mache ich etwas falsch?

Danke für jede Hilfe!

Antwort

27

Das klingt für mich normal - Sie Schienen haben gebeten, Ihre vor der Aktion zu überspringen, es sei denn, die Handlung ist :landing, :connect oder :create während es klingt, als ob Sie das Gegenteil wollen. Wenn Sie die require_login diese drei Aktionen nicht ausführen wollen, dann sollten Sie

skip_before_action :require_login, :only => [:landing, :connect, :create] 
+0

Ok tun, ich bin auf jeden Fall dumm, ich habe vergessen, als die „überspringen“, sollte das Gegenteil von before_action ... Danke tun :) –

Verwandte Themen