2016-09-26 67 views
7

我有一個Profile模型,它有一個height屬性。我如何處理simple_form內的人身高?

我需要存儲用戶的高度(aka配置文件),但我不太確定如何去做。我認爲最好的辦法是以英寸(即4'0「,4'1」... 6'5「等)分解選擇下拉菜單,但我不太確定最佳方式到其存儲在數據庫中。

我會以爲這是最簡單的,只是存儲英寸,但如果我做我該如何呈現高度我在我上面指定的格式選擇。

現在,我只是有一個整數字段:

<%= f.input_field :height, placeholder: "176", class: 'col-lg-9 form-control' %> 
+0

爲什麼不你有一個釐米領域和圖像英寸轉換成釐米。然後在模型中,您可以編寫邏輯將其轉換爲英寸,如有必要 –

+0

@AmitBadhekaPykihStaff我不知道我理解您的建議。 「將英寸轉換爲釐米」的圖像?這是什麼意思? – marcamillion

回答

1

你可以使用這個number field在保存用戶的高度或更新用戶的高度,你可以爲用戶提供一個選項,無論是選擇它。您可以使用javascript or jquery在保存前轉換爲適當的單位,也可以使用before filter進行更新和創建操作。

您可以執行以下操作而不是text_field,您甚至可以設置高度的最小值和最大值。

<%= f.number_field :height, placeholder: "176", class: 'col-lg-9 form-control' %>

+0

但是,這是怎麼給我一個選擇標籤,顯示在用戶下拉菜單中的腳選項(即4'0「,4'1」,4'2「等),然後在提交時將其轉換爲英寸。我該怎麼做? – marcamillion

+0

您可以使用java腳本或使用rails來創建select標籤,您可以使用select_tag來實現此目的。 –

+0

你能否更新你的答案並提供一些建議,看看可能的樣子?謝謝! – marcamillion

0

您可以創建具有價值和選項來選擇選擇框。

例如:數據庫中值將是4.4,但在選擇選項將4'4

<% arr = (1..10).step(0.1).to_a.map{|k| k.round(1).to_s.sub(".", "'"), [k.round(1) ] } %> 

<%= f.select :height, arr, placeholder: "176", class: 'col-lg-9 form-control' %> 

(1..10)是你的範圍,你可以把這裏的範圍任何你想要的。

0

1.更改高低變量數據類型以釐米爲單位浮動。

2.在顯示存儲數據之前,顯示腳和英寸的下拉並將其轉換爲釐米,然後保存並反之。

在您的視圖:

<select name=profile[height]>height 
<option>4.1</option> 
<option>4.2</option> 
<option>4.3</option> 
<option>4.4</option> 
</select> 

在控制器的創建操作:

@profile = Profile.new(profile_params) 
@profile.height = @profile.height*30.48 #convert foot to centimeters 
@profile.save 
0

下面是一個示例代碼片段顯示,這可能看起來的一種方式。如果將英寸整數值添加到select選項標籤,則可以在保存操作時使用jQuery抓取它。

$(document).ready(function() { 
 
    $('#save').on('click', function(){ 
 
    \t alert($('#height').val()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id='height'> 
 
    <option value="72">6'0"</option> 
 
    <option value="73">6'1"</option> 
 
    <option value="74">6'2"</option> 
 
    <option value="75">6'3"</option> 
 
    <option value="76">6'4"</option>  
 
</select> 
 
<input type="button" id="save" value="Save" />