Upto, downto

Jau gan ilgą laiką dirbu su Ruby, o jis vis dar nenustoja stebinti.

Dirbant su Rails’u (ypač kuriant template’us) dažnai tenka įdėti besikartojančius dummy elementus (pvz. naujienos, meniu punktai ir pan.). Pats neefektyviausias būdas yra žinoma copy-paste. Kurį laiką naudojau kažką tokio:

[code]
< % (1..5).each do |i| %>
Dummy text
< % end %>
[/code]

ir jaučiausi kietas hakeris 😉

Tačiau kažkur giliai viduje žinojau, kad kintamasis “i” čia yra nereikalingas, jutau kad aš atvedžiau jį į gyvenimą, kuriame jam nėra skirta nieko nuveikti, visą laiką kol bus rašomas “Dummy text” gyventi su nepilnavertiškumo kompleksu ir galiausiai išnykti taip ir nepalikus jokio pėdsako šiame pasaulyje.

Tvirtai nusprendžiau daugiau nežaloti nekaltų sielų (nors ir skaitmeninių, gyvenančių vos kelias akimirkas) ir surasti būda kaip galėčiau apsieiti be jų. Ir toks būdas yra!

[code]
< % 1.upto 5 do %>
Dummy text
< % end %>
[/code]

Update: kaip ir buvo pažymėta komentaruose dar gėriau naudoti “times” (kas beje parašyta pačioje Agile Web Development with Ruby on Rails pradžioje =))
[code]
< % 5.times do %>
Dummy text
< % end %>
[/code]

Gera yra žinoti, kad pakeitei kažkam gyvenimą 😉

6 Replies to “Upto, downto”

  1. atėjęs tik su teorinėmis žiniomis apie rails’us, skaičiau kad, jis tipo kaip ir vadovaujasi DRY(don’t repeat yourself) tai kaip čia dabar gaunasi su tuo dummy text? tai visgi ar tai DRY(kažką belenką ant elementų dedant) ar kaip čia gaunasi? prašom paaiškinti man. ačiū.

  2. belekas:
    Simple. Pvz. kuriant puslapio template’ą turi navigacinį meniu (tą ul su daug li jame ;)). Taigi vietoje to, kad rašyti

    ul
    li dummy text /li
    li dummy text /li
    li dummy text /li
    /ul

    rašai tiesiog

    ul
    3.times do
    li dummy text /li
    end
    /ul

  3. Beje, galima ir pirmuoju budu darant nerasyti |i|:

    (1..5).each do
    puts “Dummy text”
    end

  4. Robertai,
    o kiek gyvenime pasitaiko tokiu situaciju, kada keleta kartu reikia lygiai toki pati teksto fragmenta iemest?
    Na siaip bent jau is mano praktikos tai pasitaike, gal koki viena ar du kartus, o visais kitais atvejais – niekaip neisisuksi be to iteracijos numerio “i” 😉

Leave a Reply

Your email address will not be published. Required fields are marked *