Tho*_*s C 9 enums ruby-on-rails drop-down-menu
我有一个模型Lead,它有一个字段状态,它通过枚举包含多个值.
enum status: { open: 0, closed: 1, qualified: 2, rejected: 3 }
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个选择字段(在表格中),其中新状态将通过ajax保存.有人可以帮助我创建select_tag,在线我可以找到enum的工作,但因为我有ID和值,它有点复杂.
此刻我有类似的东西,虽然它不起作用:
<tbody>
<% @leads.each do |lead| %>
<tr class="<%=cycle('odd', 'even') %> location_row" id="lead_row" data-id="<%= lead.id%>">
<td><%= lead.id %></td>
<td><%= lead.fullname %></td>
<td><%= lead.email %></td>
<td><%= lead.phone %></td>
<td><%= select_tag :Status, Lead.statuses.keys.to_a %></td> #trying this, without luck
<td><%= select_tag :Status, Lead.statuses.keys.to_a.map { |w, v| [w.titleize, v] }%></td> #2nd try, without luck
<td><%= link_to (fa_icon "pencil-square-o "), edit_lead_path({:id => lead.id, :first_last_name => lead.first_last_name}), :title => 'Edit Lead', :class => "action-button" %></td>
</tr>
<% end %>
</tbody>
Run Code Online (Sandbox Code Playgroud)
谢谢,T
Tho*_*s C 21
我通过反复试验找到了答案.
<%= select_tag :status, options_for_select(Lead.statuses.map {|k, v| [k.humanize.capitalize, v]}) %>
Run Code Online (Sandbox Code Playgroud)
这两个答案都很好,但它们总是会显示枚举选项的默认列表。
如果您希望下拉列表显示已存在的值(例如在现有记录的编辑表单中),请将现有值作为第二个参数添加到options_for_select:
<%= f.select :access_level, options_for_select(Lead.statuses.map { |key, value|
[key.capitalize, value]
}, @lead.status) %>
Run Code Online (Sandbox Code Playgroud)
而且在许多情况下key.humanize是比 更好的选择key.capitalize,因为它将下划线转换为空格。
| 归档时间: |
|
| 查看次数: |
4122 次 |
| 最近记录: |