2013-03-06 4 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

нормально, это не работает, потому что источник объявлен как текст. Но как я могу создать массив? –

+0

Вам нужно четко указать, что такое вход - вероятно, строка «A B C D»? И на выходе - возможно, массив строк как ["--- -", "A-B-C-D"] НО, я действительно не знаю, каков ваш желаемый результат! – GoZoner

+0

Google «как создать массив в рубине». Кроме того, посмотрите здесь: http://www.tutorialspoint.com/ruby/ruby_arrays.htm – BlackHatSamurai

ответ

3

Может быть так ??

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

ok, это моя ошибка, что я пометил thsi post как ruby) нет, проблема немного более специфична для рельсов –

+3

Rails написано на ruby))) Вы можете разделить текст на массив, как я предложил, и тогда вы сможете получить доступ к каждой букве. – Bob

+0

Фактически вы можете получить доступ к каждой букве строки, как к массиву: «Боб» [2] # => «b» ' – MrYoshiji

1

Do:

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

нет, я полагаю, это не работает, потому что содержимое исходного столбца было объявлено как« текст », когда я создал миграцию. Но я не могу найти, как создать столбец с массивами. –

+0

Ваш источник для этого текста. Потому что ответы предоставили работу со строками. Но если вы получаете данные из URL-адреса или чего-то еще, это будет другим. – BlackHatSamurai