无法以嵌套形式显示转换后的单位

时间:2010-07-30 21:23:42

标签: ruby-on-rails

我正在开发一个应用,我的用户首选项以公制或标准单位显示距离或权重。我正在使用过滤器在数据库中以一致的格式保存单位

before_save :convert_distance

在观看中显示这些单位的最佳方式是什么?我尝试在我的模型中添加一个名为display_distance的getter,如下所示,但它没有用。

  #model
  def display_distance
      self.workout.user.uses_metric ? self.distance * 1.609344 : self.distance
  end

  #view
  <%= f.text_field :distance, {:value=>f.object.display_distance} %>

  #error
  You have a nil object when you didn't expect it!

我做了一个to_yaml并验证了f.object是正确对象的一个​​实例。另外,我使用的是嵌套表格,我不确定这是否重要。

另外,我不确定我是否应该尝试在模型或帮助器中进行转换。我认为模型会更好,因为我将在多个视图中使用此功能。

1 个答案:

答案 0 :(得分:0)

表单对您的对象一无所知,您必须通过控制器传递它。您可能在控制器中有这样的东西(假设这是编辑视图):

def edit
  @my_object = MyObject.find(params[:id])
end

然后你可以在视图中访问它:

<%= @my_object.display_distance %>