我是新手入門者。
我有這樣的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
嚴重的愚蠢的錯誤。 :)感謝您的快速回復。但我仍然需要其他答案。 – mrudult 2013-05-08 15:44:21
如果您在控制器中使用「路由」操作方法以外的其他方法(如「顯示」,「創建」等),則可能直接從瀏覽器訪問它,特別是如果您設置了通配符路由在您的路線文件中,如:match':controller(/:action(/:id))' 任何控制器方法都必須是私有的,或移動到助手或其他「PORO」(普通舊式Ruby對象)。放置一些輔助方法的另一個地方是演示者對象。只要搜索主持人模式,也許看看draper寶石。 – sockmonk 2013-05-08 18:09:41