Vytvoril som pole
steps = [{"title" =>"abc","content" =>"click this", "target" => "bca"}]
tours = ["id"=>"tour", "steps:" => "#{steps}"]
puts tours
Získava sa nasledujúci výstup:
{"id"=>"tour", "steps:"=>"[{"title"=>"abc", "content"=>"click this", "target"=>"bca"}]"}
Štruktúra výstupu je správna, ale tieto nechcem vo výstupe. Čo mám robiť, aby som ich odstránil
, Vďaka!
odpovede:
0 pre odpoveď č. 1Зелёный
má pre vás priamu odpoveď, je tu však naliehavejšia otázka, na ktorú by som chcel upozorniť - myslím si, že ste zmätení medzi {hashes}
a [arrays]
--
Pole je množina neusporiadaných údajov:
array = [3, 4, 5, 6, 0, 5, 3, "cat", "dog"]
Polia sa používajú hlavne na nesekvenčné zhromažďovanie údajov, dobrým príkladom je product_ids
v nákupnom košíku.
Polia sa dajú identifikovať iba podľa umiestnenia údajov vo vnútri poľa:
array[1] # -> 4
array[2] # -> 5
--
Haš je zbierka key:value
pary:
hash = {name: "Greg", type: "cat"}
Hashty sa používajú, keď chcete priradiť viac hodnôt k jednému údaju, a je možné ich vyvolať odkazom na „kľúč“ hash:
hash["name"] #-> Greg
hash["type"] #-> cat
Môžete vytvoriť niekoľko hashov:
hash_array = [{name: "Greg", type: "cat"}, {name: "Sulla", type: "Dog"}]
... problém je v tom, že haše nemôžete volať priamo - musia byť skrz pole:
hash_array["name"] # -> error
hash_array[0]["name"] #-> "Greg"
Vo vašom príklade teda použijem nasledovné:
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 pre odpoveď č. 2
V rubíne "#{}"
zavolajte to_s
metóda na objekte. Môžete to skontrolovať spustením nasledujúceho kódu: steps.to_s
.
Stačí použiť:
tours = ["id"=>"tour", "steps:" => steps]
Pretože toto:
"[{"title"=>"abc", "content"=>"click this", "target"=>"bca"}]"
je reťazcové vyjadrenie:
[{"title" =>"abc","content" =>"click this", "target" => "bca"}]