我在表中有一列其值和CSS类根据布尔值而不同。最初的版本我是:将函数的返回值分配给块的参数
%td.sba{ class: product.sold_by_amazon? ? :yes : :no }= product.sold_by_amazon? ? '✔' : '–'
我想删除重复布尔查询,并结束了:
- Proc.new{ |p| yield ([{ yes: :✔ }, { no: :– }].try(:[], product.sold_by_amazon? ? 0 : 1)) }.call do |sold, text|
%td.sba{ class: sold }= text
有一个不太令人费解的方式做到这一点?
此外,更简单的解决方案是使用CSS content
生成文本。
代码视图通常是一个X/Y问题的气味的结果。为什么这不是作为模型中的虚拟属性处理的? – 2014-09-20 02:46:54