我有以下代码,显示包含可能流列表的用户下拉列表。
Select Stream ID:
<%= f.select :stream_id, Log.stream_types.keys.to_a.map { |w| [w.humanize, w] } %>
枚举在Log模型中定义,如下所示,Log模型有一个名为stream_type_id的字段,如下所示。
enum stream_type: {P1: 1, P2: 2, P3: 3, P4: 4, SR: 5, PASM1: 6, PASM2: 7, AME: 8, AD: 9, Training: 10, Vacation: 11, Sick_Leave: 12, Comp_off: 13, PH_OH: 14 }
当我显示页面html代码时,会显示以下内容:
<select id="log_stream_id" name="log[stream_id]"><option value="P1">P1</option>
<option value="P2">P2</option>
<option value="P3">P3</option>
<option value="P4">P4</option>
<option value="SR">Sr</option>
<option value="PASM1">Pasm1</option>
<option value="PASM2">Pasm2</option>
<option value="AME">Ame</option>
<option value="AD">Ad</option>
<option value="Training">Training</option>
<option value="Vacation">Vacation</option>
<option value="Sick_Leave">Sick leave</option>
<option value="Comp_off">Comp off</option>
<option value="PH_OH">Ph oh</option></select>
当用户提交表单而不是字符串值时,如何编写与所选流相对应的整数值的代码?
答案 0 :(得分:3)
将Log.stream_types.keys.to_a.map { |w| [w.humanize, w] }
更改为Log.stream_types.map { |k, v| [k.humanize, v] }
。 select
的第二个参数是一个选项数组数组。选项数组的第一个和第二个元素分别是text和option元素的值。