Поле выбора настраиваемой ассоциации Rails Simple Form
У меня есть поле select, и я хочу поместить в него пользовательский атрибут под названием name, я попытался сделать это следующим образом:
<%= f.association :in_charge, :collection => User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>
Он работает и генерирует дополнительный атрибут, но есть проблема, атрибут value value изменяется на атрибут имени модели, в этом случае l.name. Я изменил места и положил l.id сначала, но атрибут id отображается, они дублируются, любая идея, почему это происходит?
Есть ли другой способ определить настраиваемые атрибуты в ассоциациях, которые выбирают поля?
Ответы
Ответ 1
С помощью Rails select() введите хелпер, обернутый входом SimpleForm.
<%= f.input :in_charge do %>
<%= f.select :county_id, User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>
<% end %>
Ваш код работает не так, как ожидалось, потому что под капотом SimpleForm вызывает collection_select(), который не поддерживает дополнительные атрибуты в теги опций.
В readme SimpleForm есть решение. Но я не заметил этого, пока сам не решил проблему:)
Ответ 2
Для записей, кажется, это работает сейчас:
f.association :product, collection: Product.all.map { |product| [product.name, product.id, {data: {description: product.description}}] }
Версия SimpleForm:
$ bundle show simple_form
/Users/josh/.rvm/gems/[email protected]/gems/simple_form-4.1.0