Iv4*_*v4n 1 ruby ruby-on-rails menu controllers
我一直在试图找到一种方法来显示应用程序从数据库生成的侧边菜单.由于菜单需要是用户可编辑的,我认为最好的做法是将其创建为脚手架,只需添加一个"显示菜单"动作即可以树状方式呈现菜单,而剩下的脚手架将允许管理员用户修改菜单项.
现在,我遇到了一个小问题 - 我无法找到一种方法来"调用"来自application.html.erb的show菜单操作(我将其用作所有操作和控制器的包装器).它有一个主'body',它有一个'yield'行,显然会让任何一个控制器被引用来渲染它的输出.在此之前,我希望在该HTML的不同部分显示动态菜单.
这可能吗,怎么会这样做呢?
因为无论显示哪个特定的动作(视图),都应该看到相同的菜单,我想避免在我的应用程序的每个控制器的每个视图中放置相同的"菜单渲染"逻辑.
从你的术语我不完全确定这是你需要的,但是这里.如果要为不同类型的信息保留布局的不同部分,可以这样做
<!-- In application.html.erb -->
<%= yield :menu %>
<!-- Main content goes here -->
<%= yield %>
Run Code Online (Sandbox Code Playgroud)
然后,在要渲染的视图中,如果要显示菜单,可以执行以下操作.
<%= content_for :menu do %>
<!-- Show menu -->
<% end %>
Run Code Online (Sandbox Code Playgroud)
这样,您可以在视图中显示您想要显示菜单而不显示其他菜单的菜单.
---更新---对于带有从db检索的菜单选项的动态菜单,请执行此操作
在ApplicationController中添加before_filter
before_filter :fetch_menu
def fetch_menu
@menu = #db query goes here
end
Run Code Online (Sandbox Code Playgroud)
在application.html.erb中
<div id="menu">
<%@menu.each do |menu|%>
<!-- Do something with menu -->
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1214 次 |
| 最近记录: |