Подтвердить что ты не робот

Поле выбора настраиваемой ассоциации 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 отображается, они дублируются, любая идея, почему это происходит?

Есть ли другой способ определить настраиваемые атрибуты в ассоциациях, которые выбирают поля?

4b9b3361

Ответ 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