2010-10-21 16 views
176

helper_method basittir: denetleyicinin yöntemlerinin bazılarını veya tümünü görünüm için kullanılabilir hale getirir.Yardımcı ve helper_method ne yapar?

helper nedir? Başka bir yol mudur, yani yardımcı metotları bir dosyaya veya bir modüle aktarır mı? (Belki adı helper ve helper_method birbirine benzemez. Bunlar daha ziyade yerine share_methods_with_view ve import_methods_from_view olabilir)

reference

cevap

263

yöntem helper_method açıkça görünümü için hazır hale getirmek üzere denetleyici tanımlanan bazı yöntemler paylaşmaktır. Bu, her iki denetleyiciden ve yardımcılardan/görünümlerden erişmeniz gereken herhangi bir yöntem için kullanılır (standart yardımcı yöntemler, denetleyicilerinde mevcut değildir). Örneğin. Genel bir kullanım durumu:

#application_controller.rb 
def current_user 
    @current_user ||= User.find_by_id!(session[:user_id]) 
end 
helper_method :current_user 

diğer yandan helper yöntem olup, kontrol birimi tarafından temin görüşlerine tüm yardımcı aktarmak için (ve bu denetleyicileri kalıtımsal). Bunun anlamı Raylar> 3,1

# application.rb 
config.action_controller.include_all_helpers = true 
# This is the default anyway, but worth knowing how to turn it off 

için

# application_controller.rb 
helper :all 

en azından tüm kontrolörler application_controller devralan için tüm görünümlerde (mevcut tüm yardımcı modülleri yapar yapıyor.

# home_controller.rb 
helper UserHelper 

yapar Ana denetleyicinin eylemleri için görünümler için UserHelper yöntemleri kullanılabilir: Bu, eşdeğerdir:

Raylar> = 3.
# HomeHelper 
include UserHelper 
+20

, 'yardımcı: Tüm' uygulaması denetleyicisi application.rb içinde 'include_all_helpers' yapılandırma ayarı ile değiştirilir. Http://stackoverflow.com/questions/1179865/ sayfasına bakın. –

+0

@Jeremy Bu yazının eski olduğunu biliyorum ama iyi dedim. Bana yardımcı oldu! –

+1

Bazı basit sözdizimsel şekerlerin ötesinde "helper" ve "include" kullanımı arasında bir fark vardır. "helper", adlandırılmış modülü görünümlere ve yalnızca görünümlere sunar. "include", adlandırılmış modülü görünümler ve denetleyiciler için kullanılabilir hale getirir. Her ikisi de devralınan denetleyicileri ve görünümlerini etkiler. –