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 回答