我有一对控制器与相关的助手模块。我得到了一些助手方法,它们应该在不同的模块中表现相似,这意味着:
module UserHelper
..
def destroy(user)
link_to t(:destroy_user), user ...
end
end
module PhotosHelper
..
def destroy(photo)
link_to t(:destroy_photo), photo ...
end
end
我不知道(意识到)所有这些帮助模块都是默认包含的,(这是ok的,我想,)不管你从哪个视图调用帮助方法。
从当前控制器/视图中分离其余帮助器的最佳方法是什么,以便当controller_name == 'photos'
时,仅使用Photos
和Application
帮助器?
帮手的概念对我来说不是很清楚。如果所有帮助者都已经混合在一起了,为什么不只使用一个ApplicationController
呢?只是为了"逻辑分离"吗?
我的意思是,当然,有一些变通的办法。但是,是只有我这样认为,还是真的觉得没有理由在全局范围内包含所有的帮助程序?
如果你在ApplicationController类中调用clear_helpers
,它们将不会在不同的helper类中共享
clear_helpers ()
清除该类中所有现有的helper,只保留与该类同名的helper。
裁判:http://api.rubyonrails.org/classes/AbstractController/Helpers/ClassMethods.html method-i-clear_helpers
您可以将通用方法放在ApplicationHelper上,并将资源作为参数传递。
因此,只能为特定的方法使用特定的帮助器资源。
方法(帮助),你可以共享,到ApplicationHelper文件