2012-03-26 65 views
2

我试图同时使用cycle和一个帮手,像显示样式表行:分配多个CSS类Rails中的表元素

<tr class= <%= cycle("list-line-odd #{row_class(item)}", "list-line-even #{row_class(item)}")%> > 

然而,当我这样做,所产生的HTML是:

<tr class = "list-line-odd" lowest-price> 

从辅助方法的返回不包含在引号中,因此无法识别。

下面是我使用的帮手:

def row_class(item) 
    if item.highest_price > 0 and item.lowest_price > 0 and item.highest_price != item.lowest_price 
     if item.current_price >= item.highest_price 
     "highest-price" 
     elsif item.current_price <= item.lowest_price 
     "lowest-price" 
     end 
    end 
    end 

我必须失去了一些东西很明显,但我只是无法弄清楚如何包装循环的两个结果,并在同一个辅助方法返回一套报价。任何帮助将不胜感激!

回答

2

在HTML中有围绕类定义的引号,以及分隔在ruby代码中调用的字符串的引号。 <%=内部的红宝石调用了两个函数,它们可以输出要用空格分隔的字符串(cycle和您的方法row_class)。我认为,任何一项都将做你想要什么:

<tr class="<%= cycle('list-line-odd', 'list-line-even') + ' ' + row_class(item) %>" > 

或者也许有点漂亮

<tr class="<%= "#{cycle('list-line-odd', 'list-line-even')} #{row_class(item)}" %>" > 

甚至%Q ||格式为避免混淆符...

<tr class="<%= %Q|#{cycle('list-line-odd', 'list-line-even')} #{row_class(item)}| %>" > 

导致类似

<tr class="list-line-odd lowest-price" > 

编辑:我原来的职位是错误的。需要连接循环和row_class方法之间的空间。

+0

这个伎俩!因为那看起来最干净,我选择了第二种选择。谢谢您的帮助! – 2012-03-26 18:26:39