簡體   English   中英

如何在simple_form中處理人員身高?

[英]How do I handle person height within a simple_form?

我有一個Profile模型,它有一個height屬性。

我需要存儲用戶的高度(也就是配置文件),但我不太清楚如何做到這一點。 我認為最好的方法是將選擇下拉列表分解為英寸(即4'0“,4'1”...... 6'5“等)。但我不太確定最好的方法將其存儲在數據庫中。

我認為最簡單的存儲英寸,但如果我這樣做,我如何以我上面指定的格式在我的選擇中顯示高度。

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

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

您可以使用number field 保存用戶身高或更新用戶身高時,您可以為用戶提供以inches or cms為單位選擇的選項。 您可以在保存之前使用javascript or jquery轉換為適當的單位,也可以使用before filter來更新和創建操作。

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

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

1.更改hieght變量數據類型以浮動為厘米。

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

您可以創建帶有值的選擇框和選項。

例如:數據庫中的值為4.4 ,但select中的選項為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)是你的范圍,你可以放在任何你想要的范圍。

這是一個示例代碼段,顯示了這種方式。 如果將英寸整數值添加到選擇選項標記,則可以在保存操作時使用jQuery獲取它。

 $(document).ready(function() { $('#save').on('click', function(){ 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" /> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM