我已经构建了一个简单的内容管理系统,并且正在尝试构建一个动态导航栏,但我想出的方法是不断地将所有页面的数组从每个控制器发送到应用程序模板。有更好的方法吗?
问问题
38 次
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 回答