2014-11-29 6 views
14

काम नहीं करता मैं है skip_before कार्रवाई के साथ कुछ समस्या:रेल छोड़ से पहले कार्रवाई

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 

और मेरे अन्य नियंत्रक:

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

मैं पता नहीं क्यों, लेकिन जब मैं रूट पर है (उपयोगकर्ताओं: नियंत्रक से लैंडिंग कार्रवाई), रेल requ_login में पास करने का प्रयास करते हैं ... मैंने इस फ़िल्टर के साथ कुछ गलत समझा है, या क्या मुझे कुछ गलत है?

किसी भी मदद के लिए धन्यवाद!

उत्तर

27

यह मेरे लिए सामान्य लगता है - आप रेल पूछा है अगर कार्रवाई :landing, :connect या :create है, जबकि यह है जैसे कि आप विपरीत चाहते हैं लगता है, सिवाय अपने पहले कार्रवाई को छोड़ने के लिए। आप उन 3 कार्रवाई चाहते हैं require_login निष्पादित करने के लिए नहीं है तो आप क्या करना चाहिए

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

ठीक है, मैं निश्चित रूप से मूर्ख हूँ, मैं की तुलना में "छोड़", before_action के विपरीत करना चाहिए ... धन्यवाद भूल गए :) –

संबंधित मुद्दे