0

私は、サイトの 1 つのページに含まれるこのウィジェットを作成しているので、ApplicationController で行っていることを宣言する理由がわかりません。ただし、この新しいウィジェットにはかなりの複雑さがあります。そのため、このページを通常処理するコントローラーとは別に維持したいと考えています。そのコントローラーにはすでにかなりの複雑さが含まれているからです。私は当初、コントローラー用のヘルパー モジュールを作成し、そこにほとんどのウィジェット ロジックを保持できると考えていました。

このヘルパー モジュールを作成しようとしていますが、単一の場所から初期化できるようにする必要がある特定の配列があることに気付きましたが、複数のメソッドがそれにアクセスする必要があり、すべての前に初期化されることを保証する必要があります。別のメソッドがこの配列を呼び出します。この変数が使用前に初期化されることを保証できるようなモジュールで before_filter に似た何かを行う方法はありますか、それとも「Railsの方法」であるこれにアプローチするより良い全体的な方法はありますか?

4

2 に答える 2

1

新しいクラスを作成し、before_filter またはコントローラーでインスタンス化できると思います。何を達成したいのかわかりませんが、例は次のとおりです。

class MyArrayBuilder
  def initialize(some, param)
    #something
  end

  def get_array
    return my_array
  end
end

class SomethingsController < ApplicationController

  before_filter :build_array

  def build_array
    @array = MyArrayBuilder.new(some, param).get_array
  end
end

次に、@array変数をヘルパーに渡します。

あなたが望むことをするための「Railsの方法」があるかどうかはわかりません.Railsは多くの慣例ですが、デザインとDRYについて多くのことを気にし始めるときは、Orientedの良い実践の観点から考える方が良いと思います. Railsの規約よりもオブジェクトプログラミング。

于 2012-11-09T21:58:47.740 に答える
0

優れたプレゼンターが必要な場合があります。ruby toolboxで探してください。

プレゼンターは、コントローラーとビューの中間です。データにアクセスし、データ操作ではなくプレゼンテーションに関連する複雑なロジックを処理できます。多くのことをクリーンでシンプルに行うことができます。それをチェックしてください、多分それはあなたの問題に良いです.

ドレーパーのチュートリアル

于 2012-11-09T22:03:27.187 に答える