如何添加if语句以确定您是否在特定路由上?

时间:2015-04-23 18:01:18

标签: css ruby-on-rails routes

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

<% if root_path %>

那是什么代码?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

但是,如果你真的想要,你可以利用params hash Rails传递给包含控制器和动作的每个视图。

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

答案 2 :(得分:1)

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

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

然后对于索引页面,正文类将为.index,而在您的SASS中,您可以执行以下操作:

body.index { ... }