0

モデルブックを持っています。名前、作成者、価格などのプロパティがあります。また、サイトに通貨スイッチャーがあります。ユーザーが選択した通貨に応じて価格をフォーマットしたい。Ruby には number_to_currency 関数がありますが、価格の特別な書式設定が必要なため、これは必要ありません (ロシア語の場合: 1 рубль、2 рубля、5 рублей)。そこで、仮想属性 price_formatted を作成しました。

def price_formatted
  case cookie[:currency]
  when 'usd'
    '<span>$'+price.to_s+'</span>'
  when 'eur'
    '<span>&euro;'+price.to_s+'</span>'
  else
    '<span>'+price.to_s+'</span> '+Russian.p(price, 'рубля', 'рублей', 'рублей')
  end
end

Russian.p は、数字のロシア語の複数形を作成します。エラーは、price_formatted 関数で Cookie が定義されていないことです。

PSこのことを機能させる別の「正しい」方法がある場合は、教えてください。

4

2 に答える 2

0

モデルで仮想属性を定義する代わりに、ビューでの属性の表示方法を制御するデコレーター パターンを使用することを好みます。この宝石https://github.com/drapergem/draperをご覧ください。draper 内では、cookie やセッションなどにアクセスできます。

于 2013-11-11T13:43:06.510 に答える