0

after_find または after_initialize が、 vehicle/edit.html.erb ビューの走行距離計を更新していないようです。

意見:

= form_for(@vehicle) do |f|
  = f.number_field :odometer

モデル:

after_find :standardise_numbers
...
def standardise_numbers
    metric ? self.odometer.miles.to.kilometers : self.odometer
end
4

1 に答える 1

1

= f.number_field :odometerの値が何であれ、単純に返します@vehicle.odometer。フォーム内で呼び出すヘルパー関数が必要になりますstandarise_numbers@vehicle

ヘルパーなしでも実行できます。

= form_for(@vehicle) do |f|
  = f.number_field :odometer, :value => @vehicle.odometer

ビューでモデル メソッドを呼び出すよりも、ヘルパーを使用する方が好きです。

odometer別のオプションは、アクセサーをオーバーライドすることVehicleです。

class Vehicle << ActiveRecord::Base

  def odometer
    metric ? self.read_attribute(:odometer).miles.to.kilometers : self.read_attribute(:odometer)
  end

end

参照: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/number_field_tag

于 2013-11-09T19:45:02.163 に答える