разделить параметры на элементы массива - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть параметры, передаваемые в мое действие обновления, которые я хотел бы преобразовать в массив целых чисел, например [1, 2, 3], в настоящее время массив имеет один строковый элемент ["1, 2, 3"].Я думал, что смогу просто взять «1, 2, 3» из параметров и разделить их на массив [«1», «2», «3»], чтобы затем преобразовать в массив целых чисел.

arr = article_params[:allowed_organization_ids]
arr_split = arr.split(",").map(&:to_i)
Rails.logger.debug(arr_split.inspect)

#<NoMethodError: undefined method `to_i' for ["4,2"]:Array>

Если я попытаюсь просто разбить строку, это не сработает, я получу дополнительный набор скобок, обернутых вокруг исходного массива, как этот [["1,2,3"]]

arr = article_params[:allowed_organization_ids]
arr_split = arr.split(",")
Rails.logger.debug(arr_split.inspect) 

Параметры:

  Processing by ArticlesController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"j+2xEqGf9ECwjgfGHGdaXwiL09klNGYE12fdfdfdfdfdfn47e8abcuukp9sL5ZzMw==", 
"article"=>{"title"=>"test1", "subtitle"=>";ji", 
"product_line_id"=>"3", "is_highlighted"=>"0", "is_featured"=>"0",  "allowed_organization_ids"=>["4,2"]}, "id"=>"168"}

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Если массив типа arr = ["1, 2, 3", "4, 5, 6"], используйте следующую вещь:

arr =  ["1, 2, 3", "4, 5, 6"]
converted_array = arr.join(",").split(",").collect {|i| i.to_i}
0 голосов
/ 21 декабря 2018

Если это вложенный массив, просто вызовите first ...

arr_split = arr.first.split(",").map(&:to_i)
...