I have a form that creates new users. I am trying to add a drop down option to select permission levels. I want to be able to select multiple permission levels per user.
I didn't test it so far but the error message is pretty straight forward, you are trying to use the #select method using 5 params and it accepts at most 4 params, reading the API it seems that you should provide the 'class' attribute in the same hash you have provided the 'multiple' as they both are html_options.
Try to use it like this:
<%= f.select :permission,
[ ["Read Only", "read"],
["IP Voice Telephony", "ip_voice"],
["IP Video Telephony", "ip_video_telephony"],
["Enterprise Gateways", "enterprise_gateways"],
["Consumer ATAs", "consumer_atas"],
["IP PBX", "ip_pbx"],
["Master of All", "all"] ],
{prompt: "Select Permission Level"},
{multiple: true, class: "input-lg"} %>
It would also be good to have that permissions array decoupled to another place. Perhaps it will help to maintain.
http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select
class
and multiple
are both part of html_options
, so they should go together in a single hash.
Change
<%= f.select :permission, [ ["Read Only", "read"], ["IP Voice Telephony", "ip_voice"], ["IP Video Telephony", "ip_video_telephony"], ["Enterprise Gateways", "enterprise_gateways"], ["Consumer ATAs", "consumer_atas"], ["IP PBX", "ip_pbx"], ["Master of All", "all"] ], {prompt: "Select Permission Level"},
{:multiple => true}, class: "input-lg" %>
To
<%= f.select :permission, [ ["Read Only", "read"], ["IP Voice Telephony", "ip_voice"], ["IP Video Telephony", "ip_video_telephony"], ["Enterprise Gateways", "enterprise_gateways"], ["Consumer ATAs", "consumer_atas"], ["IP PBX", "ip_pbx"], ["Master of All", "all"] ], {prompt: "Select Permission Level"},
{:multiple => true, class: "input-lg"} %>
Right now you are passing them separately. So, the argument count for select
method is becoming 5 when it should be 4. Hence, the error.
Your option for :class is not in the hash for html_options:
{:multiple => true}, class: "input-lg"
should be
{:multiple => true, class: "input-lg"}