我构建了一个简单的内容管理系统,我正在尝试构建一个动态导航栏,但我想到的方法是继续从每个控制器向应用程序模板发送所有页面的数组。有更好的方法吗?
答案 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)
您可以在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 -%>