/ / Вкладені рейки динамічного масиву - ruby-on-rails, arrays, ruby-on-rails-3, багатовимірний масив

Вкладені динамічні масивні рейки - рубіни на рейках, масиви, рубіни на рейках-3, багатовимірні масиви

Я створив масив

steps = [{"title" =>"abc","content" =>"click this", "target" => "bca"}]
tours = ["id"=>"tour", "steps:" => "#{steps}"]
puts tours

Отримання наступних результатів:

{"id"=>"tour", "steps:"=>"[{"title"=>"abc", "content"=>"click this", "target"=>"bca"}]"}

Структура результату правильна, але я не хочу цього на виході. Що мені робити, щоб їх видалити . Дякую!

Відповіді:

0 для відповіді № 1

Зелёный має пряму відповідь для вас, однак, є більш актуальне питання, на яке я хотів би звернути увагу - я думаю, ви плутаєтесь між {hashes} і [arrays]

--

Масив - це набір невпорядкованих даних:

array = [3, 4, 5, 6, 0, 5, 3, "cat", "dog"]

Масиви в основному використовуються для непослідовного збору даних, хорошим прикладом є product_ids в кошику для покупок.

Ідентифікувати масиви можна лише за допомогою розташування даних усередині масиву:

array[1] # -> 4
array[2] # -> 5

--

Хеш - це колекція key:value пари:

hash = {name: "Greg", type: "cat"}

Хеші використовуються, коли ви хочете призначити кілька значень одному фрагменту даних, і їх можна викликати, посилаючись на "ключ" хешу:

hash["name"] #-> Greg
hash["type"] #-> cat

Поки ви можете створити масив хешів:

 hash_array = [{name: "Greg", type: "cat"}, {name: "Sulla", type: "Dog"}]

... проблема в тому, що ви не можете викликати хеші безпосередньо - вони повинні бути через масив:

 hash_array["name"] # -> error
hash_array[0]["name"] #-> "Greg"

Таким чином, я б використав у вашому прикладі наступне:

steps = {"title" =>"abc","content" =>"click this", "target" => "bca"}
tours = {id: "tour", steps: steps}
tours.inspect #-> { id: "tour", steps: { "title" => "abc", "content" => "click this", "target" => "bca" }

2 для відповіді № 2

У рубіні "#{}" викликати to_s метод на об'єкті. Ви можете перевірити його за допомогою наступного коду: steps.to_s.

Просто використовуйте:

tours = ["id"=>"tour", "steps:" => steps]

Тому що це:

"[{"title"=>"abc", "content"=>"click this", "target"=>"bca"}]"

- це рядкове представлення:

[{"title" =>"abc","content" =>"click this", "target" => "bca"}]