这个逻辑在HAML / Rails中意味着什么?

时间:2014-01-09 06:44:39

标签: ruby-on-rails haml

我的HAML布局中有这个逻辑,但我不知道这意味着什么:

.navbar.navbar-inverse{class: (params[:controller] == 'welcome' ? "navbar-fixed-top" : "navbar-static-top")}

2 个答案:

答案 0 :(得分:2)

您有一个包含navbarnavbar-inverse类的div。

另一类是有条件的。如果您的控制器为welcome,那么该课程将为navbar-fixed-top其他navbar-static-top

生成的HTML将是这样的

In case params[:controller] is `welcome`
<div class="navbar navbar-inverse navbar-fixed-top"> </div>

对于params [:controller]

的其他值
<div class="navbar navbar-inverse navbar-static-top"> </div>

答案 1 :(得分:0)

添加@jyothu所说的内容,(我认为SO需要更基本的解释)

其三元if运算符

在Ruby中,

1.9.3p385 :001 > a = 100

1.9.3p385 :002 > if a == 100
1.9.3p385 :003?>    b = 200
1.9.3p385 :004?>   else
1.9.3p385 :005 >     b = 300
1.9.3p385 :006?>   end

1.9.3p385 :007 > p b
200

1.9.3p385 :008 > b = (a == 100 ? 200 : 300) # one line if statement
1.9.3p385 :009 > p b
200

所以这句话,

(params[:controller] == 'welcome' ? "navbar-fixed-top" : "navbar-static-top")

将根据控制器的值返回“navbar-fixed-top”或“navbar-static-top”。 '?'表示,如果和':'表示其他。