【问题标题】:How to add an if statement to determine if you are on a specific route?如何添加 if 语句来确定您是否在特定路线上?
【发布时间】:2015-04-23 18:01:17
【问题描述】:

我无法在任何地方找到答案。我要做的是根据您所在的路线获得不同的 CSS。所以例如

<% if root_path %>

它的代码是什么?

【问题讨论】:

  • 您为什么需要这样做?根据路线,将呈现不同的视图,因此您可以相应地编写 CSS 以“命名空间”,以便它们只影响它们应该影响的页面。
  • 嗯,我知道,但是如果您想将一些代码放入布局中怎么办?我知道你可以只改变布局,但如果你能找到路线,那可能太复杂了。

标签: css ruby-on-rails routes


【解决方案1】:

看看current_page? helper,这样的情况非常方便。

current_page?(action: 'process')
# => false
current_page?(controller: 'shop', action: 'checkout')
# => true
current_page?(controller: 'shop', action: 'checkout', order: 'asc')
# => false
current_page?(action: 'checkout')
# => true
current_page?(controller: 'library', action: 'checkout')
# => false
current_page?('http://www.example.com/shop/checkout')
# => true
current_page?('/shop/checkout')
# => true

我没有测试,但这应该可以:

if current_page?(product_path(@product))
  #some logic here

【讨论】:

    【解决方案2】:

    您不必这样做,因为您可以设置您的 CSS,以便每个视图提取不同的 CSS 值。

    但是,如果您真的愿意,您可以利用 Rails 传递给每个包含控制器和操作的视图的参数哈希值。

    <%= params %>
    #{"controller"=>"home", "action"=>"index"}
    <% if params[:controller] == "home" and params[:action] == "index" %>
      #dothings
    <% end %>
    

    【讨论】:

      【解决方案3】:

      我通常在 body 元素上使用动态类,然后在我的 CSS / SASS 中绑定到它,如下所示:

      <body class="#{controller.action_name}">...</body>
      

      那么对于索引页面,body 类将是 .index,在你的 SASS 中你可以做类似的事情

      body.index { ... }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-26
        • 2015-09-30
        • 2010-09-07
        • 1970-01-01
        • 1970-01-01
        • 2017-04-01
        • 2021-08-21
        • 2020-02-02
        相关资源
        最近更新 更多