I’m using ActiveAdmin and trying to do a as: :select, :collection that isn’t a multiple select.
My code is:
form do |f|
f.input :users, :as => :select, :input_html => { :size => 1}, :multiple => false, collection: User.where(role:1), include_blank: false
end
Where this is in /admin/businesses.rb. The relationship is that there is habtm between Users and Businesses. I’ve tried rearranging my options as shown in the github issue. I’ve also looked at a similar stackoverflow question.
However, when I try with the :multiple => false, I get this code generated:
<select id="business_user_ids" multiple="multiple" name="business[user_ids][]" size="1">
<option value="4">Pilgrim</option>
<option value="5" selected="selected">Mary</option>
<option value="6" selected="selected">Bob</option>
<option value="7">Billy</option>
<option value="8">Ash</option></select>
Note that there are two selected, and the code for multiple is set to multiple. Any one know why this is?
Also, I’m trying to figure out how to display another field as what is selectable.
For example, I have f.inputs :users. is there a way to rename what is shown for :users? Right now, it shows users.name, but I would like users.email.
I just bumped into this problem, too. After a little code tracing I found that it’s duo to the underlying Formtastic lib.
Formtastic takes precedence of existing reflection (has_many & has_and_belongs_to_many) over the options you pass in to decide it’s multiple or not.
I think it’s because forcing single selection on a ?-to-many relation will cause some confusions. Just like your data, there are already two selected, what should be shown in a strict single select? But I’ll maybe raise this issue to Formtastic later.
If you still need that function, you could just monkey patch it by placing the following code at config/initializers/formtastic.rb
And for your second question, you just need to add the following code into your model.