0

シンプルなコンテンツ管理システムを構築し、動的なナビゲーションバーを構築しようとしていますが、私が思いついたアプローチは、すべてのページの配列を各コントローラーからアプリケーションテンプレートに送信し続けることです。これに対するより良いアプローチはありますか?

4

2 に答える 2

1

@Amit Patelがあなたの質問へのコメントで述べたように、より良いアプローチはあなたが参照しているコードをに移動することですApplicationController

アプリケーション内のすべてのコントローラーがクラスを拡張しますApplicationController。すべてのコントローラー間で共有したい機能はすべて、このクラスに配置できます。

例として(実際のコードを提供していないため)、これを次のように設定できます。before_filter

class ApplicationController < ActionController::Base
  before_filter :build_pages_array

  # Your other ApplicationController code here...

    private

    def build_pages_array
      @pages = Page.all
    end
end

before_filterは、すべてのコントローラーのすべてのアクションに対して実行さ@pagesれ、アプリケーションのすべてのテンプレートで効果的に使用できるようになります。

于 2012-08-31T11:08:45.127 に答える
0

ApplicationHelper( )モジュールでメソッドを作成するapp/helper/application_helper.rbと、ビューからこのメソッドにアクセスできます。

module ApplicationHelper
  def get_your_array
    # create your array here
  end
end

あなたの見解では:

<% get_your_array.each |item| -%>
  <%= item %>
<% end -%>
于 2012-08-31T11:08:35.040 に答える