【问题标题】:Changing Navbar Elements Depending On the Page Using an If Statement使用 if 语句根据页面更改导航栏元素
【发布时间】:2016-08-23 23:46:54
【问题描述】:

有没有办法使用 if 语句根据您所在的页面操作导航栏中的元素?

例如,我想要做的是让我的主屏幕上的导航栏透明并且链接文本是黑色的。如果我将鼠标悬停在导航栏链接上,链接文本将变为白色,背景为黑色(这是我的类 nav-font 完成的)。看下面的截图:

但是,对于不是主页的所有其他页面,我希望此配色方案反转(或相反)。 Rails 目前可以做到这一点吗?

所以我想使用以下伪代码在我的布局文件 (application.html.erb) 中执行以下操作:

<% if we're on the homepage %>
    <ul class="nav navbar-nav navbar-right nav-font">
        <li><%= link_to "About", about_path %></li>
        <li><%= link_to "Contact", new_contact_path %></li>
    </ul>
<% else %>
    <ul class="nav navbar-nav navbar-right nav-font-inverted">
        <li><%= link_to "About", about_path %></li>
        <li><%= link_to "Contact", new_contact_path %></li>
    </ul>        
<% end %>

我想知道的是:

  1. 这可能吗?如果是这样,我该怎么做?
  2. 如果没有,是否有更简单的解决方案或替代方案?

【问题讨论】:

标签: ruby-on-rails-4 twitter-bootstrap-3


【解决方案1】:

试试

<% if controller_name == "your controller" && action_name = "your method" %>
    <ul class="nav navbar-nav navbar-right nav-font">
        <li><%= link_to "About", about_path %></li>
        <li><%= link_to "Contact", new_contact_path %></li>
    </ul>
<% else %>
    <ul class="nav navbar-nav navbar-right nav-font-inverted">
        <li><%= link_to "About", about_path %></li>
        <li><%= link_to "Contact", new_contact_path %></li>
    </ul>        
<% end %>

【讨论】:

  • 好的,所以我的控制器被命名为“PagesController”,它看起来像这样:puu.sh/ozurk/4f81e9c6ef.png 所以你说的是“controller_name”将是“PagesController”而“action_name”将是“得到?”如果是这样,那将如何指向我的主页?
  • 不,action_name 将是您在控制器上调用的 def
  • 例如action_name == "index"
  • 你的 controller_name 应该是 pages
  • 谢谢!实际上,我将您的代码稍微调整为“" 所以它现在可以正常工作了。
猜你喜欢
  • 2020-12-27
  • 2012-07-21
  • 2018-08-23
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多