RefineryCMS:将引导样式应用于导航菜单

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">元素中.然后重新启动应用程序以使补丁生效,希望您能看到一个熟悉的引导程序导航栏.

祝好运!

马丁.