rails 简单形式将数据属性添加到输入 select 包装器以及 select 选项
rails simple-form add data attributes to input select wrapper as well as select options
我已按照 this SO answer 将数据属性添加到我的 select 选项中。
但是我的输入 select 包装器中还需要一个数据属性。
目前看起来是这样的:
<% options = @active_users.map do |user| %>
<% [user.full_name, user.id, data: { 'org': user.organization.name }] %>
<% end %>
<%= f.input :user, label: false, required: false, as: :select,
wrapper_html: { class: 'search person js-linked',
data: { 'linked-by': 'person' }
} do
%>
<%= f.select :user_id, options, { include_blank: 'Add user…' },
{ class: 'select optional', placeholder: 'Add user…' }
%>
<% end %>
如果我在没有输入包装器数据属性的情况下测试选项数据属性,它会像预期的那样工作(数据属性被添加到选项中),但是一旦我添加 wrapper_html
数据属性,如上面的代码所示,select 选项中的数据属性消失。
我也尝试使用 this SO answer 中建议的自定义输入,但结果相同。
我很感激任何关于为什么会发生这种情况以及如何解决它的见解。
事实证明,这是由处理 linked-by
的 JS 代码引起的。它没有考虑选项中可能的数据属性,它们只是被覆盖了。
我已按照 this SO answer 将数据属性添加到我的 select 选项中。 但是我的输入 select 包装器中还需要一个数据属性。
目前看起来是这样的:
<% options = @active_users.map do |user| %>
<% [user.full_name, user.id, data: { 'org': user.organization.name }] %>
<% end %>
<%= f.input :user, label: false, required: false, as: :select,
wrapper_html: { class: 'search person js-linked',
data: { 'linked-by': 'person' }
} do
%>
<%= f.select :user_id, options, { include_blank: 'Add user…' },
{ class: 'select optional', placeholder: 'Add user…' }
%>
<% end %>
如果我在没有输入包装器数据属性的情况下测试选项数据属性,它会像预期的那样工作(数据属性被添加到选项中),但是一旦我添加 wrapper_html
数据属性,如上面的代码所示,select 选项中的数据属性消失。
我也尝试使用 this SO answer 中建议的自定义输入,但结果相同。
我很感激任何关于为什么会发生这种情况以及如何解决它的见解。
事实证明,这是由处理 linked-by
的 JS 代码引起的。它没有考虑选项中可能的数据属性,它们只是被覆盖了。