2011-12-04 73 views
0

嗨,我不知道如何在這裏做鏈式過濾器。這裏是我的代碼Rails 3 before_filter檢查移動設備後

before_filter :prepare_for_mobile 
    protect_from_forgery 

    private 

    def mobile_device? 
    request.user_agent =~ /Mobile|webOS/ 
    end 
    helper_method :mobile_device? 

    def prepare_for_mobile 
    request.format = :mobile if mobile_device? 
    end 

我要的是:prepare_for_mobile後,如果它不是一個移動設備會重定向到一個正常的網站,我想檢查,如果用戶登錄。在移動版本,沒有用戶會需要登錄。

而在正常的網站,我想:except一個特定的控制器以及。

我該怎麼做?

非常感謝。

回答

1

好吧,有幾件事....看起來你部分地從Railscasts.com實施解決方案here(只有你試圖做到這一點,而不設置會話參數??)。

你不需要'鏈'過濾器。只需創建一個新函數(例如:get_ready),以您希望的順序調用其他兩個函數,並將其作爲過濾器。

before_filter :get_ready 
protect_from_forgery 

private 

def get_ready 
    prepare_for_mobile 
    the_other_thing_you_want_to_chain 
end 

def mobile_device? 
    request.user_agent =~ /Mobile|webOS/ 
end 
helper_method :mobile_device? 

def prepare_for_mobile 
    request.format = :mobile if mobile_device? 
end 

def the_other_thing_you_want_to_chain 
    do_something unless mobile_device? 
end 

如果你想基於移動單個站點內的分支行爲,你應該做的是,在控制器,在路線,或兩者兼而有之。我希望我回答你的問題。