我有一个装有汽车尺寸的数据库 因此用户可以编写类似2.5(如升)或2500(cc)的内容 后来我有一个排序,它应该使用999-9999值进行比较
我提出了下面的功能,但我希望它更灵活。此外,2.5导致2000的结果现在因为看起来像Rails在触发before_save之前转换值
如何正确转换并检测输入中是否有点或逗号?
before_save :covert_engine
private
def covert_engine
if self.car_engine_size.present?
if Math.log10(self.car_engine_size).to_i + 1 < 4
self.car_engine_size = self.car_engine_size * 1000
end
end
end
P.S。 self.car_engine_size是数据库中的整数
答案 0 :(得分:0)
如果您希望用户能够使用不同的输入单位,我会通过让用户选择单位将其显示给用户。
首先创建一个虚拟属性
<?xml version="1.0" encoding="UTF-8"?>
<bean id = "HandlerMapping" class= "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name = "/welcome.html" class= "com.FirstProject.hellocontroller.HelloController"/>
<bean id= "viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name = "prefix" > </property>
<value>WEB-INF</value>
<property name= "suffix"> </property>
<value>.JSP </value>
</bean>
将属性添加到表单并将其列入控制器白名单
class Car
attr_accessor :engine_size_unit
end
然后使用the value before the typecast
转换模型中的值<%= f.number_field :engine_size %>
<%= f.select :engine_size_unit, ['cc', 'l']) %>