我正在开发一个应用,我的用户首选项以公制或标准单位显示距离或权重。我正在使用过滤器在数据库中以一致的格式保存单位
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是正确对象的一个实例。另外,我使用的是嵌套表格,我不确定这是否重要。
另外,我不确定我是否应该尝试在模型或帮助器中进行转换。我认为模型会更好,因为我将在多个视图中使用此功能。
答案 0 :(得分:0)
表单对您的对象一无所知,您必须通过控制器传递它。您可能在控制器中有这样的东西(假设这是编辑视图):
def edit
@my_object = MyObject.find(params[:id])
end
然后你可以在视图中访问它:
<%= @my_object.display_distance %>