2014-11-29 10 views
14

Mam jakiś problem z działaniem skip_before:Szyny pomiń przed akcja nie działa

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 

i mój drugi kontroler:

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

nie wiem dlaczego, ale kiedy 'm na root'ie (akcja: landinging od UsersController), Railsy próbują przekazać w require_login ... Mylę coś z tym filtrem, czy coś nie tak?

Dzięki za pomoc!

Odpowiedz

27

Brzmi to dla mnie normalne - zapytał pan szyn pominąć swoje działania przed, chyba że działanie jest :landing, :connect lub :create natomiast brzmi tak, jakbyś chciał coś przeciwnego. Jeśli chcesz te 3 czynności nie wykonać require_login następnie należy robić

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

Ok, jestem zdecydowanie głupie, ja zapomniałem niż „skip”, należy wykonać przeciwieństwo before_action ... dzięki :) –