Skip to main content
 首页 » 编程设计

ruby-on-rails之如何添加HTML属性以使用Simple Form Rails选择选项

2024年10月25日16mq0036

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

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

<%= f.input :group, collection: @groups, option_html: { data-type: lambda { |g| g[2] } } %> 

会产生(简化)的:
<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> 
@groups可能看起来像这样:
[ 
    ['First Group', 1, 'primary'], 
    ['Second Group', 2, 'secondary'], 
    ['Third Group', 3, 'secondary'] 
] 

希望避免做出自定义控件/包装。谢谢!

请您参考如下方法:

你近了!最简单的方法实际上是在这里不使用simple_form。这是simple_form documentation

<% 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 %> 

对于您的确切代码,它将是:
<% 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 %>