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
答案 0 :(得分: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