2014-11-29 18 views
14

Ho qualche problema con l'azione skip_before:Rails ignorati prima azione non funziona

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 

e il mio altro controller:

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

Non so perché, ma quando ho Sono nella radice (il: azione di atterraggio da UsersController), Rails tenta di passare nel require_login ... Ho qualcosa di sbagliato con questo filtro, o ho qualcosa di sbagliato?

Grazie per qualsiasi aiuto!

risposta

27

Questo suona normale per me - hai chiesto rotaie di saltare la vostra azione prima, tranne se l'azione è :landing, :connect o :create mentre suona come se si vuole il contrario. Se si desidera che tali 3 azioni di non eseguire l'require_login allora si dovrebbe fare

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

Ok, sono sicuramente stupido, ho dimenticato che il "saltare", dovrebbe fare il contrario di before_action ... Grazie :) –

Problemi correlati