R M*_*hev 5 css ruby-on-rails refinerycms twitter-bootstrap
我已将Refinery CMS升级到最新版本(2.1.0),其中有一种渲染导航菜单的新方法:
(部分_header.html.erb)
<%= Refinery::Pages::MenuPresenter.new(refinery_menu_pages, self).to_html %>
Run Code Online (Sandbox Code Playgroud)
相同部分的旧版本:
<%= render(:partial => "/refinery/menu", :locals => {
:dom_id => 'menu',
:css => 'menu'
}) %>
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用导航栏添加引导程序样式MenuPresenter?
Mar*_*n W 12
它可以完成,但解决方案并不漂亮,因为Refinery 2.1中的Menu Presenter不支持开箱即用的所有正确的CSS选项.但有点坚持不懈,这大致是做什么的:
首先,在这里创建一个新的空白文件: config/initializers/refinery/monkey_patch_menu_presenter.rb
在此补丁文件中,粘贴菜单展示器的更新版本(2013年10月发布)的内容:menu_presenter.rb
接下来,根据菜单演示者指南第5节中的说明,在您的app/helpers/application_helper.rb文件中添加一个名为的新方法navigation_menu:
def navigation_menu
presenter = Refinery::Pages::MenuPresenter.new(refinery_menu_pages, self)
presenter.css = "navbar-inner"
presenter.menu_tag = :div
presenter.list_tag_css = "nav"
presenter.selected_css = "active"
presenter.first_css = ""
presenter.last_css = ""
presenter.max_depth = 0 # prevents dropdown menus, which don't render correctly
presenter
end
Run Code Online (Sandbox Code Playgroud)
最后,在您的app/views/refinery/_header.html.erb文件中($ bundle exec rake refinery:override view=refinery/_header如果它不存在则使用),替换以下调用:
<%= Refinery::Pages::MenuPresenter.new(refinery_menu_pages, self).to_html %>
Run Code Online (Sandbox Code Playgroud)
有:
<div class="navbar">
<%= navigation_menu.to_html %>
</div>
Run Code Online (Sandbox Code Playgroud)
确保已加载Bootstrap CSS/JS文件并将整个页面包装在<div class="container">元素中.然后重新启动应用程序以使补丁生效,希望您能看到一个熟悉的引导程序导航栏.
祝好运!
马丁.
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |