2013-08-06 84 views
1

我一直在寻找,似乎无法找到任何东西。我在Rails应用中使用Easy-Roles & CanCan,我的角色列被定义为一个字符串数组。当用户从下拉列表中输入/选择一个角色时,参数将以字符串而不是数组形式发送,因此我无法将其保存在数据库中。红宝石字符串数组方法

有没有什么方法可以从字符串创建一个1D-1元素的字符串数组?

编辑:

这里是我的形式:

<%= f.collection_select :roles, User::ROLES, :to_s, :split, 
         :prompt=>"Select a role" %> 

而且我得到这个错误:

Attribute was supposed to be a Array, but was a String. -- "Admin" 
+0

感谢@Jeffrey很滑稽。无论如何,我问的原因是因为如果你的属性需要一个数组,那么你的表单可能会产生数组(比如''select' with'multiple = true')对吗?如果用户在任何时候只能拥有1个角色,那么为什么要使用Easy-Roles呢? – j03w

回答

5

为什么不

[someString] 

其中someString是一个包含字符串的变量?

或者你的情况:

[params[:yourRoleString]] 
+0

它怎么不试图解释':yourRoleString'作为'params'中的索引? – nus

-1

你可以只使用

someString.split 

,会做

someString = "Hello" 
someString.split 
    => ["Hello"] 
+0

恩,不要这样做。 '.split'用于将字符串拆分为数组:''Hi There“.split#=> [”Hi“,”There“]'。读取代码的人不仅会感到困惑,而且如果在字符串中有任何空格,它会将它分解为多个部分,而这些部分可能不是你想要的。 –