如何在模型中调用number_helper?

时间:2012-11-30 22:00:57

标签: ruby-on-rails ruby-on-rails-3 best-in-place

我正在使用best_in_place gem,并且长话短说我不能在我的视图中调用这个特定的帮助器,因为我必须在我的模型中调用自定义方法来自定义我希望输出看起来的方式。 / p>

这是我认为的电话:

<td><%= best_in_place firm, :size, :type => :input, :nil => "Click to add Firm Size", :display_as => :in_millions %></td>

这是我的Firm模型中的方法:

def in_millions
    "$#{self.size}M"
end

用户输入的数字不是100000000,而是100。所以我想接受100,然后阅读$100M。这就是我的助手所做的。

但是,对于那些类似12345的数字,我希望输出看起来像这样:$12,345M

我能想到的最简单方法就是添加number_with_delimiter(self.size)并保留$M,但我无法从我的模型中访问该辅助方法。

思想?

2 个答案:

答案 0 :(得分:3)

您可以通过添加ActionView::Helpers

在模型中加入帮助程序
# in model
include ActionView::Helpers

我想知道,如果将演示文稿保留在演示文稿方面是不合理的。您可以将替代逻辑包装在备用帮助程序中:

# in helper
def firm_size_in_millions(firm)
  size = number_with_delimiter(firm.size)
  "$#{size}M"
end

<!-- in view -->
<%= firm_size_in_millions(@firm) %>

答案 1 :(得分:1)

帮助者被视为“呈现”工具 - 货币值或小数值,例如,在某些区域或国家/地区可能会以不同于其他区域或国家/地区的方式表示。

但如果您知道所有这些,那么您的模型中只有include ActionView::Helpers::NumberHelper: - )