Ruby on Rails 4选择多个

我有一个创建新用户的表单。 我正在尝试添加下拉选项以选择权限级别。 我希望能够为每个用户选择多个权限级别。

这是我的看法,我添加了{:multiple => true}

   true}, class: "input-lg" %> 

我的控制器,我补充说:permission => []

 def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation, :admin, :permission => []) end 

我为我的观点得到的错误,f。选择:

 wrong number of arguments (5 for 2..4) 

你如何为Rails 4制作一个选择倍数?

classmultiple都是html_options一部分,所以它们应该放在一个哈希中。

更改

 <%= 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" %> 

 <%= 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"} %> 

现在你分开传递它们。 因此, select方法的参数计数在应该为4时变为5。因此,错误。

您的选项:class不在html_options的哈希中:

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

应该

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

到目前为止我没有测试它,但错误信息很简单,你试图使用#select方法使用5个参数并且它最多接受4个参数,阅读API似乎你应该提供’类’你在同一个哈希中提供了’multiple’属性,因为它们都是html_options。

尝试使用它像这样:

 <%= 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"} %> 

将权限数组解耦到另一个地方也是一件好事。 也许这有助于维持。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select