Rails简单导航如何风格?

时间:2011-11-03 14:59:44

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems

我正在使用简单的导航宝石为我的网站创建一些“简单”导航。

我已经创建了一个带有CSS,JQUERY&的标签式菜单。 HTML。

唯一的问题是通过简单的导航创建完全相同的CSS和HTML。

以下是我尝试使用简单导航创建的HTML:

<ul id="ulmenu">

<li class="topmenuli" id="menufirst">
<a href="#" class="">Frontpage<span id="frontpage"></span></a>
<ul id="submenu" style="display: none;">
  <li><a style="font-weight:bolder;text-decoration:underline;background:url(../images/menua.png) no-repeat center bottom;" href="#" class="">Submenu 1</a></li>
   <li><a href="#" class="">Submenu 2</a></li>
</ul>
</li>
<li class="topmenuli">
<span style="display:block;" id="pets"></span>
<a href="#">Pets</a>
<ul style="display:none;" id="submenu">
  <li><a href="#">Submenu 1</a></li>
  <li>Submenu 2</li>
</ul>
</li>
</ul>

我的简单导航配置文件:

SimpleNavigation::Configuration.run do |navigation|

    primary.item :frontpage, 'frontpage', root_url, :id => 'menufirst', :class => 'topmenuli'
    primary.item :domain, 'Pets', domain_path do |sub_nav|
      # Add an item to the sub navigation (same params again)
      sub_nav.item :dogs, 'Dogs', dogs_path
    end
  end

输出:

<ul><li id="menufirst" class="topmenuli selected simple-navigation-active-leaf"><a class="selected" href="http://localhost:3000/"><span>Frontpage</span></a></li>
<li id="petes"><a href="/pets"><span>Pets</span></a></li></ul>

不像我的HTML。子菜单未显示。我也试过使用highligt但是然后面包屑导航是完全错误的。

如何使用简单导航创建HTML菜单?

2 个答案:

答案 0 :(得分:5)

更改<ul>容器上的属性,使用(例如):

primary.item :domain, 'Pets', domain_path do |sub_nav|
  sub_nav.dom_id = 'some_submenu_id'
  sub_nav.dom_class = 'some_submenu_class'
  sub_nav.item :dogs, 'Dogs', dogs_path
  # add any more items you want
end    

更改<li>元素的属性:

primary.item :domain, 'Pets', domain_path, :class => 'my_class', :id => 'my_id' # etc.

还可以提供自定义id属性生成器(如the documentation中所述):

navigation.id_generator = Proc.new {|key| "my-prefix-#{key}"}

关于你的style属性,我不知道simple_navigation是否处理这个,但你所要做的就是创建一些最小的css选择器:

.block
{
  display: block;
}

.container
{
  margin: 1em;
}

......及相关课程:

<div class="block container">I will be displayed as a block and have a 1em margin</div>

答案 1 :(得分:0)

为&lt; li&gt;添加课程的正确方法和&lt; a&gt;:

primary.item :domain, 'Pets', domain_path, :html => {:class => "my_li_class"}, :link_html => {:class => "my_a_class"}

请参阅Official Simple Navigation FAQ

相关问题