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 回答