Я створив масив
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"}]