1

アプリの JSON 出力では、ほとんどの非整数 (浮動小数点数) の数値を小数点以下 1 桁に丸めて表示する必要があります。つまり、1.7777 は 1.8 と表示されます。

これは、Float の as_json メソッドにモンキー パッチを適用することで実現しました。

class Float
  def as_json(options={})
    self.round 1
  end
end

これが良いアイデアかどうかもわかりません。RABL テンプレートで数値の形式を指定する方法がわからないため、実行しました。

しかし今、丸めなしで特定の値 (緯度と経度) を表示する必要もあります。

object @foo
attributes :bar, :latitude, :longitude

RABL に一部の値 (バー) を丸め、他の値 (緯度、経度) を丸めないようにするにはどうすればよいですか?

4

2 に答える 2

2

元のコンテキストで質問に答えるには、RABL テンプレートで、追加の処理が必要な属性のカスタム ノードを作成するだけです。

object @foo
attributes :bar
node(:latitude) { |foo| f.latitude.round(1) }
node(:longitude) { |foo| f.longitude.round(1) }
于 2013-03-08T13:04:01.500 に答える
1

あなたがやりたいことは、このロジックを処理するビュー モデルを作成することです。draper gemをチェックしてください。

ビュー モデルでオブジェクトをラップすると、オブジェクト (この場合は JSON 表現) を "表示" する機能に固有のメソッドを定義できます。ビュー モデルで bar メソッドを定義すると、それに応じて値が丸められます。draper は Decorator パターンを使用するため、経度と緯度のメソッドは基礎となるオブジェクトの一部であるため、無料で取得できます。次に、ビュー モデルを rabl テンプレートに渡します。

于 2013-02-11T01:35:51.153 に答える