如何使用Simple Form Rails添加HTML属性以选择选项?

YWC*_*llo 27 ruby-on-rails simple-form

我需要一个自定义的HTML属性添加到每option一个select控制.我在Rails中使用simple_form.有谁知道如何做到这一点?该属性将由客户端JS使用.

例如,我想做这样的事情:

<%= f.input :group, collection: @groups, option_html: { data-type: lambda { |g| g[2] } } %>
Run Code Online (Sandbox Code Playgroud)

哪个会产生(简化):

<select>
    <option value="1" data-type="primary">First Group</option>
    <option value="2" data-type="secondary">Second Group</option>
    <option value="3" data-type="secondary">Third Group</option>
</select>
Run Code Online (Sandbox Code Playgroud)

@groups可能是这样的:

[
    ['First Group', 1, 'primary'],
    ['Second Group', 2, 'secondary'],
    ['Third Group', 3, 'secondary']
]
Run Code Online (Sandbox Code Playgroud)

希望避免必须制作自定义控件/包装器.谢谢!

Bla*_*son 19

你很亲密!最简单的方法实际上不是在这里使用simple_form.这是simple_form文档

<% options = @group.map { |g| [g.name, g.id, {'data-type' => g.group_type}] } %>
<%= f.input :group, label: 'Group' do %>
  <%= f.select :group, options, include_blank: 'Select a Group', class: 'form-control' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

对于您的确切代码,它将是:

<% options = @group.map { |g| [g[0], g[1], {'data-type' => g[2]}] } %>
<%= f.input :group, label: 'Group' do %>
  <%= f.select :group, options, include_blank: 'Select a Group', class: 'form-control' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)


小智 11

仅简单形式:

= f.input :group, @groups.map{|l| [l[0], l[1], {data: {type: l[2]}}]}


YWC*_*llo 0

这似乎是执行此操作的正确方法:

Rails Simple Form 自定义关联选择字段

  • 发布的链接说明了如何自定义 &lt;select&gt; 标签,作者想要自定义 &lt;option&gt; 标签。 (2认同)