如何将集合中的值传递为自定义HTML属性?

时间:2016-03-03 16:17:39

标签: ruby-on-rails

我在Rails中写一个表单。我有一组用户,其中包括以下用户详细信息

  • 名称
  • 姓氏
  • ID
  • EMPLOYEE_ID

我想将用户名定义为下拉显示值,而其ID为下拉,但同时我想添加一个其他自定义HTML属性,即data-employee-id,设置为与employeeId

相同

我目前的代码如下:

.user-dropdown
  = f.label 'name'
  = f.input :id, as: :select, collection: @users, include_blank: }

html结果如下:

<option value='1' data-employee-id='1234'>Alex</option>
<option value='2' data-employee-id='2468'>Bradley</option>
<option value='3' data-employee-id='1357'>Cathy</option>

2 个答案:

答案 0 :(得分:1)

您可以使用options_for_select

执行此操作
= f.select :id, options_for_select(
  @users.map { |u| [u.name, u.id, {'data-employee-id' => u.id}] })

答案 1 :(得分:0)

简单形式有它的好处所以Mihai的答案很接近 simple_form方式是

= f.input :id, collection: @users.map { |u| [u.name, u.id] }, 
include_blank: true/false

并且你还没有打开它就留下了一个闭合的大括号。