1

私のプロジェクトが成長するにつれて、いくつかのメソッドを記述する必要がありますが、application_controller のプライベート メソッドとヘルパーは、すべての拡張機能を格納するのに十分なスペースを提供しません。

そのため、/lib フォルダーに格納されているカスタム クラスとメソッドを調べました。

しかし、まだ解決できないいくつかの質問があります。

-「class << self」はいつ使うべきですか? 2 つの数値配列の差を計算し、その数値の中間値を持つ新しい配列を返すクラスがあります。私はそのようなコードに慣れていました:

x = MyClass.new
x.calculate(array1, array2)

そして、クラスのメソッドを「class << self; end」に配置して、初期化せずにクラスを使用しました。正解ですか?

-いつカスタム モジュールを使用する必要がありますか? それらを常に「含める」または「要求する」必要がありますか? プロジェクトのモジュールについて教えてください。いつそれらを使用しますか?

-コントローラーでヘルパーのメソッドを呼び出すにはどうすればよいですか? ajaxレスポンスで使いたい。たとえば、ヘルパー メソッド 'users_for_output' を使用し、ajax 呼び出しがあった場合、アプリはユーザーのみをテキストとしてレンダリングし、後で JavaScript で処理する必要があります。

4

1 に答える 1

1

1)静的メソッドを呼び出すためにクラスをインスタンス化する必要はありません。つまり

MyUtil.do_something 

対。

MyUtil.new.do_something 

私のプロジェクトでは、そのようなメソッドを静的に保ちます。

2) クラス間で一連の機能を共有したい場合は、モジュールを使用できます。このミックスインと継承の議論を読んでください。モジュールをいつ使用するかについての良いアイデアが得られます。

2.1) このincludedメソッドは、モジュール変数の初期化を目的としています。何も初期化していない場合は使用する必要はありません。

3) コントローラー メソッドをヘルパー メソッドとして公開する場合はhelper_method、ApplicationController クラスで呼び出しを使用します。

class ApplicationController < ActionController::Base
  helper_method :user_for_output
end
于 2010-03-07T02:05:22.017 に答える