0
對於rails控制器中的受保護方法,可以通過用helper_method聲明它們來使其可見。默認情況下,在所有視圖中共享(可訪問)rails helper到視圖的方法。我的問題是,控制器方法是否用所有視圖共享(可訪問)helper_method聲明?helper_method對rails中的所有視圖都可用後控制器中的方法
感謝
對於rails控制器中的受保護方法,可以通過用helper_method聲明它們來使其可見。默認情況下,在所有視圖中共享(可訪問)rails helper到視圖的方法。我的問題是,控制器方法是否用所有視圖共享(可訪問)helper_method聲明?helper_method對rails中的所有視圖都可用後控制器中的方法
感謝
如果你聲明的控制方法與是helper_method一個助手,那麼助手將只在屬於控制器的看法是可用的。
如果您想讓幫助程序在所有視圖中都可用,則必須在應用程序控制器中定義控制器方法並聲明幫助程序。
如果你有興趣,這是相關的Rails代碼:
def helper_method(*meths)
meths.flatten!
self._helper_methods += meths
meths.each do |meth|
_helpers.class_eval <<-ruby_eval, __FILE__, __LINE__ + 1
def #{meth}(*args, &blk)
controller.send(%(#{meth}), *args, &blk)
end
ruby_eval
end
end
你可以看到,調用的時候,助手只是調用控制器上的相同名稱的方法。