rails格式正数和负数

时间:2011-10-11 17:11:22

标签: ruby ruby-on-rails-3

我正在尝试使用number_to_currency格式化rails中的一列数字。我希望用()s显示负数 - 使用negative_format选项很容易。但是,当我这样做时,一列数字中的小数点不对齐。我想为正数的格式添加一个尾随空格 - %u%n,只是我不知道该怎么做 - 有人能给我正确的格式在尾随空格中吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

有几种方法可以用一点空间填充正数:

  1. 使用fixed width font和不间断空格 
  2. 将一个类应用于正数的封闭元素(或包裹在一个范围内),然后使用内部填充向右侧添加空格。
  3. 第一种方法将演示文稿与内容混合在一起,但具有使用任何字体大小(或用户调整大小的字体)的优势。使用第二种解决方案,您的HTML更清晰,在性能良好的浏览器中,一切都会运行良好,但您的里程数会因现代化程度不同而不同。

    这是第一个选项的快速实现:

    def pad_positives(number_string)
      unless number_string[0,1] == '('
        number_string += '%nbsp;'
      end
      number_string
    end
    

    您可以将其放入适当的帮助文件中,然后在视图中执行以下操作:

    <%= pad_positives(number_to_currency(number, ...)) %>
    

    请注意,此函数需要一个字符串,因此如果您传递一个数字,它将会阻塞。希望这有帮助!

答案 1 :(得分:0)

假设你的循环中有变量amount

<td class="amount">
  <%= (amount >= 0) ? "#{number_to_currency(amount)}&nbsp;" : "(#{number_to_currency(amount)})" %>
</td>

在你的CSS中:

.amount {
  font-family:monospace;
}