【发布时间】:2011-06-09 06:18:17
【问题描述】:
我有两个不同的帮助文件(photos_helper 和 cmets_helper),其中有一个名为 actions_for 的方法。如何显式调用我需要的辅助方法?我知道我可以只重命名其中一个,但我希望它们保持不变。我试过PhotosHelper::actions_for,但这似乎不起作用。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
我有两个不同的帮助文件(photos_helper 和 cmets_helper),其中有一个名为 actions_for 的方法。如何显式调用我需要的辅助方法?我知道我可以只重命名其中一个,但我希望它们保持不变。我试过PhotosHelper::actions_for,但这似乎不起作用。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
在 Rails 3 中,总是包含所有助手(在 Rails 3.1 中,存在一个补丁以选择性地再次允许助手)。幕后发生了什么:
class YourView
include ApplicationHelper
include UserHelper
include ProjectHelper
...
end
因此,根据 Rails 包含它们的顺序,将使用您的任何 actions_for 方法。您无法明确选择其中之一。
如果您必须显式调用ProjectHelper.action_for,您也可以将您的方法命名为project_action_for - 最简单的解决方案。
【讨论】:
将它们都设为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'
【讨论】: