Ruby / Rails:如果condition为true,则只传递参数

时间:2011-03-22 21:08:59

标签: ruby-on-rails ruby ruby-on-rails-3 haml

我有一行像这样的HAML:

%li{:id=>node.shortcode, :class=>liclass unless liclass.empty? }

哪个不起作用。如果提供的条件不正确,我只想传递'class'参数。有没有一种很好的方法在Ruby中执行此操作我只需要使用if / else?

3 个答案:

答案 0 :(得分:4)

试试这个:

%li{({:id=>node.shortcode}.merge(liclass.empty? ? {} : {:class=>liclass}) )}

它不漂亮,但它会为你提供你所追求的标记。

答案 1 :(得分:1)

%li{:id=>node.shortcode, :class=>(liclass unless liclass.empty?)}

答案 2 :(得分:0)

liclass为空时,它不应该分配课程,但我不确定 试试这个:
%li{:id=>node.shortcode, :class=>liclass }