将数组发送到每个模板

时间:2012-08-31 10:34:06

标签: ruby-on-rails erb

我构建了一个简单的内容管理系统,我正在尝试构建一个动态导航栏,但我想到的方法是继续从每个控制器向应用程序模板发送所有页面的数组。有更好的方法吗?

2 个答案:

答案 0 :(得分: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可用于应用程序中的每个模板。

答案 1 :(得分:0)

您可以在ApplicationHelperapp/helper/application_helper.rb)模块中创建一个方法,然后从您的观点中获得此方法:

module ApplicationHelper
  def get_your_array
    # create your array here
  end
end

在您的观点中:

<% get_your_array.each |item| -%>
  <%= item %>
<% end -%>