2

私は best_in_place gem を使用していますが、簡単に言うと、モデルでカスタム メソッドを呼び出して出力の外観をカスタマイズする必要があるため、ビューでこの特定のヘルパーを呼び出すことはできません。

これは私の見解での呼び出しです:

<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

私が考える最も簡単な方法は、 andを追加number_with_delimiter(self.size)して保持することですが、モデルからそのヘルパー メソッドにアクセスできません。$M

考え?

4

2 に答える 2

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) %>
于 2012-11-30T22:07:16.053 に答える
1

ヘルパーは「プレゼンテーション」ツールと見なされます。たとえば、通貨の値や 10 進数の値は、ロケールや国によっては異なる方法で表現される場合があります。

しかし、これらすべてを知っている場合include ActionView::Helpers::NumberHelperは、モデルでのみ:-)

于 2012-11-30T22:06:46.040 に答える