具有相同方法名称的多个Rails助手

时间:2011-06-09 06:18:18

标签: ruby-on-rails ruby-on-rails-3

我有两个不同的帮助文件(photos_helper& comments_helper)w /有一个名为actions_for的方法。如何显式调用我需要的辅助方法?我知道我可以重命名其中一个,但我更愿意让它们保持不变。我试过PhotosHelper::actions_for,但这似乎不起作用。

2 个答案:

答案 0 :(得分:7)

在Rails 3中,所有帮助程序总是(在Rails 3.1中存在一个补丁,以便有选择地再次允许帮助程序)。幕后发生了什么:

class YourView
  include ApplicationHelper
  include UserHelper
  include ProjectHelper

  ...
end

因此,根据Rails包含它们的顺序,将使用您的任何actions_for方法。你无法明确选择其中一个。

如果您必须明确调用ProjectHelper.action_for,您还可以为方法命名project_action_for - 最简单的解决方案。

答案 1 :(得分: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'