Html :(获取数据)
New hourly rate: <input type="number" name="rate" />
我尝试了两种方法来存储rate
。
Result.erb
rate= params[:rate].to_f # this works .But always show one decimal points ,like 90.5
rate= params[:rate] # String can't be coerced into Float --error
我希望它在必要时显示小数点,如34.5,45,23.2,33
如何改善?
答案 0 :(得分:1)
首先让它统一是一件好事(您的to_f
转化方法)。
但是如果你想将它转换为不同的类型(Float或Integer,取决于小数点存在),你可以这样做:
# check if params[:rate] converted to Float equals to converted to Integer
rate = if params[:rate].to_f == params[:rate].to_i
params[:rate].to_i # Return integer if yes
else
params[:rate].to_f # Return float otherwise
end
可以使用三元运算符编写短文:
rate = params[:rate].to_f == params[:rate].to_i ? params[:rate].to_i : params[:rate].to_f
params[:rate] = '2.2'
rate = params[:rate].to_f == params[:rate].to_i ? params[:rate].to_i : params[:rate].to_f
#=> 2.2
params[:rate] = '2'
rate = params[:rate].to_f == params[:rate].to_i ? params[:rate].to_i : params[:rate].to_f
#=> 2