Rails集合使用枚举值进行选择



我有下面的代码,它向用户显示一个下拉列表,其中包含一个可能的流列表。

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>

当用户提交表单而不是String值时,我如何编写与所选流对应的整数值被传递的代码?

Log.stream_types.keys.to_a.map { |w| [w.humanize, w] }更改为Log.stream_types.map { |k, v| [k.humanize, v] }select的第二个自变量是选项数组的数组。选项数组的第一个和第二个元素分别是选项元素的文本和值。

最新更新