2013-03-06 64 views
-4

我想按每个空格拆分给定的字符串。 所以,Test类具有来源:文字在轨道上拆分方法

def create 
     @test = Test.new(params[:test]) 
     @test.source = @test.source.split(/ /) 
     #that usual code 

如果我输入类似

'A B C D' 

输出是

'--- - A-B-C-D' 

和行为像往常一样串,所以@ test.source [0]给出' - '。我想它是数组。我想要它是数组。 我需要它通过它的顺序访问我的文本输入中的每个单词,例如,@ test.source [0]我想返回“A”。

UPD:

现在我发现, 'serailize' 的方法是什么我正在寻找,但

serialize :sources, Array 

不会改变任何东西

+0

OK,这是行不通的,因为源声明为文本。但我怎样才能创建一个数组? – 2013-03-06 19:11:52

+0

你需要清楚输入是什么 - 可能是一串“A B C D”?在输出结果上 - 可能是一个字符串数组,如[“--- ---”,“A-B-C-D”]但是,我真的不知道你想要的输出是什么! – GoZoner 2013-03-06 19:12:20

+0

谷歌“如何创建一个红宝石阵列”。另外,看看这里:http://www.tutorialspoint.com/ruby/ruby_arrays.htm – BlackHatSamurai 2013-03-06 19:12:21

回答

3

可能是这样??

1.9.3-p374 :012 > "A B C D".split(" ") 
    => ["A", "B", "C", "D"] 
+0

好吧,这是我的错误,我标签thsi帖子为红宝石)否,问题是更具体的轨道 – 2013-03-06 19:18:17

+3

Rails是写在红宝石上)))你可以按照我的建议将文本分割成数组,然后你就可以访问每一个字母。 – Bob 2013-03-06 19:21:38

+0

您实际上可以访问字符串的每个字母,例如它是一个数组:“Bob”[2]#=>“b”' – MrYoshiji 2013-03-06 19:29:23

1

务必:

def create 
     @test = Test.new(params[:test]) 
     @test.source = @test.source.split(" ") 
+0

不,我想这不起作用,因为当我创建迁移时,源列内容被声明为“文本”。但我找不到如何使用数组创建列。 – 2013-03-06 19:21:03

+0

您对本文有什么意见?因为提供的答案适用于字符串。但是如果你从URL或其他东西获取数据,它将会有所不同。 – BlackHatSamurai 2013-03-06 19:23:11