2

我在两个不同的助手中创建了助手函数(link_to_alert)

  1. 应用程序/帮助者/posts_helper.rb
  2. 应用程序/帮助者/students_helper.rb

现在link_to_alertapp/views/student/index.html.haml

问题是视图调用了相同的函数app/helpers/posts_helper.rb

如何app/helpers/students_helper.rb从我的 app/views/student/index.html.haml视图中调用存在的辅助函数?

4

2 回答 2

8

由于默认情况下所有助手都包含在所有控制器中,因此最常见的方法是对函数进行不同的命名,例如link_to_alert_postslink_to_alert_students

第二种方法是禁用包括所有助手并在控制器中选择您需要的助手。

config.action_controller.include_all_helpers = false

class PostsController
  helper :posts
end

class StudentsController
  helper :students
end

在这种情况下,所有由 Posts Controller 渲染的视图都将具有 Posts Helper 的功能,而对于 Students Controller - 来自 Students Helper。

第三种方法是使用 module_function 并在所有调用前加上辅助模块名称。不过,我从未见过这种方法特别适用于 Rails 助手。

module StudentsHelper
  module_function

  def link_to_alert
  end
end

StudentsHelper.link_to_alert

另一种方法是使用演示者或装饰者,但这是一个完全不同的主题。

于 2012-06-22T12:37:30.077 回答
0

为什么不把不同的名字link_to_alert_posts,,,link_to_alert_students
顺便说一句,您可以通过输入模块名称和函数名称来调用它。

于 2012-06-22T12:14:27.470 回答