2017-02-10 50 views
-2

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

你真的用'//'來評論你的Ruby代碼嗎? :) –

+0

@Andrey Deineko不,我不知道如何評論代碼。 – Monchhichi

+0

爲你編輯了這個問題:) –

回答

1

首先讓它統一是一件好事(你的to_f轉換方法)。

但是,如果你希望它被轉換爲不同的類型(float或整型取決於小數點存在的),你可以做如下:

# 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 
+0

'rate = params [:rate] .to_f == params [:rate] .to_i? params [:rate] .to_i:params [:rate] .to_f'你能解釋一下這句話的結構嗎?我不明白這個簡短的表格 – Monchhichi