Ruby on Rails 4 select multiple

后端 未结 3 711
小蘑菇
小蘑菇 2020-12-16 20:47

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.

相关标签:
3条回答
  • 2020-12-16 21:20

    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

    0 讨论(0)
  • 2020-12-16 21:32

    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.

    0 讨论(0)
  • 2020-12-16 21:35

    Your option for :class is not in the hash for html_options:

    {:multiple => true}, class: "input-lg"
    

    should be

    {:multiple => true, class: "input-lg"}
    
    0 讨论(0)
提交回复
热议问题