我在两个不同的帮助者中创建了辅助函数(link_to_alert)
现在从link_to_alert
app/views/student/index.html.haml
问题是调用app/helpers/posts_helper.rb
如何从我的app/helpers/students_helper.rb
视图中调用app/views/student/index.html.haml
中的辅助函数?
答案 0 :(得分:8)
由于默认情况下所有控制器都包含在所有控制器中,因此最常见的方法是以不同的方式命名函数,例如link_to_alert_posts
和link_to_alert_students
。
第二种方法是禁用包括所有帮助程序并在控制器中选择所需的帮助程序。
config.action_controller.include_all_helpers = false
class PostsController
helper :posts
end
class StudentsController
helper :students
end
在这种情况下,Posts Controller呈现的所有视图都将具有Posts Helper和Student Controller的功能 - 来自学生助手。
第三种方法是使用module_function并使用辅助模块名称为所有调用添加前缀。 我从来没有见过这个特别使用Rails助手。
module StudentsHelper
module_function
def link_to_alert
end
end
StudentsHelper.link_to_alert
另一种方法是使用演示者或装饰者,但这是一个完全不同的主题。
答案 1 :(得分:0)
为什么不添加不同的名称,link_to_alert_posts
,link_to_alert_students
?
顺便说一句,您可以通过输入模块名称和函数名称来调用它。