0

現在、アプリケーションレイアウトのパーシャルの1つでJQueryプラグインをレンダリングしています。これは、Sunspot-solrを使用して生成されたデータを取得するアプリケーションヘルパーメソッドの1つを部分的に呼び出します。取得するデータは、さまざまなモデル、アップロード、ユーザー、記事などで最近作成された上位30のレコードです。このデータがアプリケーションのすべてのビューに表示される場合、このデータを読み込むためのベストプラクティスは何でしょうか。

明らかに、パフォーマンスが私の最大の関心事です。

これは、現在アプリケーションヘルパーでデータを取得している方法です。

def get_updates
    @updates = Sunspot.search(Upload,Help,User) do    
      order_by(:created_at, :desc)
      paginate page: 1, per_page: 30
    end
    @updates = @updates.results
end
4

2 に答える 2

0

これがグローバルに表示したいこの1つのアイテムだけである場合は、ApplicationControllerで実行しても問題ありません。そのような要素が多数ある場合は、フォームと呼ぶことができる基本的に再利用可能なサブコントローラーであるセルを確認することをお勧めします。ビューまたはコントローラー。

于 2012-07-20T22:24:16.713 に答える
0

before_filterそのデータをApplicationControllerのでフェッチできます。そうすれば、アプリケーション全体で任意のコントローラーでレンダリングされたすべてのビューで使用できるようになります。

擬似コード:

class ApplicationController

  before_filter :load_top_30

  private

    def load_top_30
      @top_30 = Records.find() # whatever code you need to fetch the records
    end

end

@top_30これで、どのビューでも使用できます。ヘルパーはデータをフェッチする必要はありません(そしておそらくそうすべきではありません)。データはすでにインスタンス変数に含まれているため、データを渡すだけです。

于 2012-07-20T18:13:16.300 に答える