2013-05-08 42 views
0

我是新手入門者。
我有這樣的SessionsController:即使在明確包含它們之後,Rails 3輔助方法在控制器中不可用

def method 
    sign_in 'user' 
end 

而這SessionsHelper:

def sing_in(user) 
    ...... 
end 

所以,谷歌搜索和閱讀的計算器一些答案讓我去嘗試這樣的事:
包括「SessionsHelper 'SessionsController甚至試圖把它放在'ApplicationController' like這樣的:

class ApplicationController < ActionController::Base 

    protect_from_forgery 
    include SessionsHelper 

    def handle_unverified_requests 
    sign_out 
    super 
    end 
end 

但是我卻越來越

NoMethodError:未定義的方法`sign_in'的SessionsController:0x007eff2004fcd8

另外幾個問題:
1)什麼是在Heplers中使用少量方法的幾點/差別和在控制器中很少?這是安全問題還是什麼?
2)我也試過在SessionsController中放置sign_in方法,因爲我在stackoverflow中讀取控制器中定義的方法可以在視圖中訪問。所以要避免在我用

是helper_method

意見任何問題,但仍然是相同的NoMethodError
3)訪問控制器的輔助方法最好的,簡單的方法?

那麼我哪裏錯了。
我使用的Rails 3.2.11紅寶石2.0.0p0

回答

0

看起來像一個錯字:你的helper方法是 'sing_in' 而不是 'sign_in'。

+0

嚴重的愚蠢的錯誤。 :)感謝您的快速回復。但我仍然需要其他答案。 – mrudult 2013-05-08 15:44:21

+0

如果您在控制器中使用「路由」操作方法以外的其他方法(如「顯示」,「創建」等),則可能直接從瀏覽器訪問它,特別是如果您設置了通配符路由在您的路線文件中,如:match':controller(/:action(/:id))' 任何控制器方法都必須是私有的,或移動到助手或其他「PORO」(普通舊式Ruby對象)。放置一些輔助方法的另一個地方是演示者對象。只要搜索主持人模式,也許看看draper寶石。 – sockmonk 2013-05-08 18:09:41

相關問題