0

これが私が一貫して見落としてきた明らかな何かであり、コミュニティが私を正しい道に導くことができることを願っています.

私はニュース記事コントローラーを持っていますが、さまざまなビューで「共通の」ティッカー リストを使用できるようにしたいと考えています。いくつかのコントローラーでパーシャルを使用している場合、この「@article_list」を初期化するにはどうすればよいですか? どうやら、ヘルパーは単にビュー ロジック用であるため、ヘルパーを使用することは解決策ではないという意見があります。では、必要に応じてすべてのコントローラーで使用できるこのイニシャライザーをどこに置くのでしょうか? それらをアプリケーションコントローラーに入れるべきではありませんか?

4

2 に答える 2

0

基本的に、必要なものを返すことのみを担当するクエリ オブジェクトを作成できます。@article_listたとえば、Psylone の回答から構築します。

class ArticleList
  def ticker_articles
    ArticleList.all # or any onther selection
  end
end

このクラスはlibapp/modelsapp/query_objectsapp/models/query_objects、あなたにとって意味のある場所ならどこにでも入れることができます。これは The Rails Way から少し外れているため、これらのタイプのオブジェクトをどこに置くべきかについての規則はありません。

次に、これが必要なコントローラーで、次のようにします。

@article_list = ArticleList.new.ticker_articles

クエリ オブジェクトの詳細については、この codeclimate の記事#4 を参照してください。set に対して何を行っているかによって@article_list、これはサービス オブジェクト (#2) またはまったく別のものと呼ばれることもあります。あなたがそれを何と呼んでも、その責任はあなたが必要とする値を返すことであり、@article_listそれだけです。

于 2013-09-15T23:30:01.783 に答える