2011-06-09 106 views
5

我有两个不同的帮助程序文件(photos_helper & comments_helper),它有一个名为actions_for的方法。我如何明确调用我需要的帮助器方法?我知道我可以重命名其中的一个,但我宁愿保持它们不变。我试过PhotosHelper::actions_for但这似乎不起作用。具有相同方法名称的多个Rails帮助程序

回答

7

在Rails 3中,所有的助手总是(在Rails 3.1中有一个补丁存在来选择性地允许助手)。这是怎么回事幕后:

class YourView 
    include ApplicationHelper 
    include UserHelper 
    include ProjectHelper 

    ... 
end 

所以取决于顺序Rails包含它们,你的任何actions_for方法将被使用。你无法明确选择其中之一。

如果您不得不明确地致电ProjectHelper.action_for,您也可以将您的方法命名为project_action_for - 最简单的解决方案。

6

让他们两人的Class Method

module LoginsHelper 
    def self.your_method_name 
    "LoginsHelper" 
    end 
end 

module UsersHelper 
    def self.your_method_name 
    "UsersHelper" 
    end 
end 
在查看

然后

LoginsHelper.your_method_name #Gives 'LoginsHelper' 

UsersHelper.your_method_name #Gives 'UsersHelper' 
+2

但是,这不允许访问其中任何其他“常规”ActionView :: Helper方法,如link_to,_url,image_tag。 – 2011-06-09 06:41:19

相关问题