我正在编写一个 Rails 应用程序,其中有一个模型可以采取某些措施(身高、体重、颈围等)
我希望它适用于公制和英制测量系统。
我的模型有一个 measure_unit 属性,可以是公制或英制。所有的度量都将存储在公制数据库中。
我使用 simple_form gem,我不知道如何实现视图,以便如果用户使用英制系统,他的数据会即时转换。
<% if @customer.measure_unit.eql? "metric" %>
<%= f.input :height %></br>
<% else %>
...
<% end %>
我如何填空?
编辑——找到一个可行的解决方案
我最终使用了诸如“height_in_cm”和“height_in_in”之类的虚拟属性,将数据库中的条目存储在 mm 中。
这是模型的代码:
def height_in_cm
height / 10
end
def height_in_cm=(height)
self.height = height.to_f * 10
end
def height_in_in
height * 0.039370
end
def height_in_in=(height)
self.height = height.to_f / 0.039370
end
以及视图的代码:
<% if @customer.measure_unit.eql? "imperial" %>
<%= f.input :height_in_in %></br>
<% else %>
<% if @customer.measure_unit.eql? "metric" %>
<%= f.input :height_in_cm %></br>
<% end %>
<% end %>