2

2 つの異なるヘルパーでヘルパー関数 (link_to_alert) を作成しました

  1. app/helpers/posts_helper.rb
  2. app/helpers/students_helper.rb

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

4

2 に答える 2

8

すべてのヘルパーはデフォルトですべてのコントローラーに含まれているため、最も一般的な方法は、関数に別の名前を付けることです。たとえばlink_to_alert_posts、とlink_to_alert_students

2番目の方法は、すべてのヘルパーを含めることを無効にして、コントローラーで必要なヘルパーを選択することです。

config.action_controller.include_all_helpers = false

class PostsController
  helper :posts
end

class StudentsController
  helper :students
end

この場合、Posts Controllerによってレンダリングされるすべてのビューは、Posts Helperからの機能を持ち、StudentControllerの場合はStudentsHelperからの機能を持ちます。

3番目の方法は、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 に答える