0

これはベスト プラクティスの質問です。JavaScriptファイルの生成に使用されるいくつかのパラメーターを格納するモデルがあります。1 つのモデル インスタンスで 1 つのファイルが生成されます。params 置換には erb テンプレートを使用します。問題は、各モデルの更新後に js ファイルを生成するコードをどこに配置するかです。モデルはすべての erb とファイルの混乱を認識できないため、モデル ファイルは適切なオプションとは思えません。コントローラーは通常、ユーザー要求の場合に呼び出されますが、正確にはそうではありません。私はオブザーバーを見始めましたが、まだ疑いがあります。

4

2 に答える 2

1

オブザーバーは良い解決策ですrails generate observer jsfile。ターミナルで実行することから始めます。jsfileをモデル名として使用しています。

次のようなニーズに合わせてオブザーバーを編集します

class JsfileObserver < ActiveRecord::Observer
    observe :jsfile

    # after_save works both for update and create, which I guess is what you want
    def after_save(record)
        # generate the file with the params from your record
    end
end

config/application.rb最後に、ファイルを調整することを忘れないでください

# Activate observers that should always be running.
config.active_record.observers = :jsfile_observer

もちろん、サーバーを再起動する必要があります;)

于 2013-06-07T09:26:00.190 に答える
1

まず、パラメーターを js コードにレンダリングするコードがビューにある必要があります。ビューは出力を生成するためのものです。

次に、コントローラー内のファイルに書き込むコードを配置します。コントローラーはモデルとビューをリンクします。
ファイルを生成するには、何らかのイベントが必要です。それは、オブジェクトの作成、オブジェクトへの変更、またはファイルを生成するための明示的な要求である可能性があります。
これらの各イベントは、コントローラーで処理する必要があります。

オブザーバーは、「副作用」を処理するためのものです。

于 2013-06-07T09:36:12.023 に答える