在我的Rails应用程序中,我有这个选择框:
<%= f.select :invoice_id, current_user.invoices.numbers_ordered %>
这是我的Invoice
课程:
class Invoice < ActiveRecord::Base
belongs_to :user
def self.numbers_ordered
order(:number).map { |i| [ i.number, i.id ] }
end
...
end
如何在不改变现有代码的情况下为每个选项添加data-attribute
?
感谢您的帮助。
答案 0 :(得分:2)
您可以尝试这样的事情:
def self.numbers_ordered
order(:number).map { |i| [ i.number, i.id, :'data-attribute' => i.some_data ] }
end
select
在内部使用options_for_select
并获取options_for_select
的所有参数。
答案 1 :(得分:1)
这很好地解释了它:https://stackoverflow.com/a/9076805/2036529
在您看来,您可以使用:
<%= f.select :invoice_id, options_for_select(current_user.invoices.numbers_ordered) %>
并在您的Invoice类中,将方法更改为以下内容:
def self.numbers_ordered
order(:number).map { |i| [ i.number, i.id, {'data-customAttr': "#{i.attr_1} -- #{i.attr_2}" ] }
end