Rails:在content_tag中添加额外的html

时间:2014-11-18 03:53:52

标签: ruby-on-rails

在我的导航中,我需要' .active'告诉用户他们是否在当前页面中。所以我定义了一个帮助器来动态生成li.active

def nav_link(link_text, link_path
  class_name = current_page?(link_path) ? 'active' : nil
  content_tag(:li, :class => class_name) do
    link_to link_text, link_path
  end
end

所以它可以生成

<li class="active">
<a href="/resources">Resources</a>
</li>

但是,对于一个特定的链接,我想将<strong>添加到<a>内的<li>,以使其与其他链接脱颖而出。我该怎么办?

<li class="active">
<strong><a href="/resources">Resources</a></strong>
</li>

更新: 从这个

enter image description here

到此

enter image description here

每个导航链接(例如newresourcesvideos)都使用nav_link帮助程序。我需要的是一种在resouces链接中插入一些html(或CSS)的方法。让它脱颖而出。

1 个答案:

答案 0 :(得分:1)

你能不能在css进行更改?

.active {
  font-weight: bold;
}

您当然可以嵌套content_tag来添加strong节点:

def nav_link(link_text, link_path, additional_class = nil)
  class_name = current_page?(link_path) ? 'active' : nil
  content_tag(:li, :class => class_name) do
    content_tag(:strong) do 
      link_to link_text, link_path
    end
  end
end

更新

您可以检查&#34;资源&#34;如下添加strong标记:

def nav_link(link_text, link_path, additional_class = nil)
  class_name = current_page?(link_path) ? 'active' : nil
  content_tag(:li, :class => class_name) do
    link = link_to(link_text, link_path)

    if link_text == 'Resources' 
      content_tag(:strong) { link }
    else
      link
    end
  end
end