0

ユーザーが測定単位を「メトリック」または「インペリアル」に設定したかどうかに応じて、サイトのフロントエンドで一連の数値をインペリアルからメトリックに変換しようとしています

数値を変換するだけでいい@myWeight*.45のですが、やりたいのはこのようなヘルパーメソッドを書くことです

def is_imperial?
  if User.measurement_units == 'metric'
    *0.453592
  elsif User.measurement_units == 'imperial'
    *1
  end
end

次に、これを行うことができます:@myWeight*.is_imperial?

*valueをメソッドに割り当てる方法がわかりませんis_imperial?

助けてくれてありがとう!

編集:

@myWeight は、いくつかの数値を加算して計算される float です。

measurement_unitsユーザーがUser モデルのフィールドの値としてメトリックを持っている場合、サイトに表示される数値をメトリックに変換するエレガントな方法を見つけようとしています。

application_helper.rb にヘルパー メソッドを作成する必要があると思いました。それは正しくありませんか?

4

3 に答える 3

2

次のような意味だと思います。

class User

  def imperial
    f_multiplier = 0.0
    f_multiplier = !!(self.measurement_units == 'metric') ? 0.453592 : 1
    imperial = self.weight * f_multiplier
  end

end

puts @myWeight.imperial
于 2013-08-09T20:34:54.323 に答える
0

Float 値であると仮定すると@myWeight、パッチを適用する方法を探しているようです。Rails コンソールにチェックインすると、@myWeight.class.nameFloat が返されます。

Rails でモンキー パッチを適用するには、

ディレクトリを作成しますconfig/initializers/extensions。これは、将来モンキー パッチが適用されたメソッドを保存する場所です。

というファイルを作成しますfloats.rb

次のコードを追加します。

class Float
  def is_imperial?
    if User.measurement_units == 'metric'
      self*0.453592
    elsif User.measurement_units == 'imperial'
      self*1
    end
  end
end

Rails サーバーを再起動して再初期化してください。

于 2013-08-09T20:39:36.157 に答える