keskiviikko 15. lokakuuta 2014

Reitit solmussa

Sitten yhteen hankalimmista mutta tärkeimmistä asioista: routes.rb tiedostoon ja reitteihin ylipäänsä.

Ensimmäinen muutos, jonka routes.rb tiedostoon tein, oli

   root 'welcome#index'

Tämä tekee sen, että kun joku tulee nettisivun "juureen", hänet ohjataan welcome-controlleriin ja siellä index-actioniin.

Railsissa on eräänlaisia controllerien vakiotoimintoja. Toimintoja voi ja varmasti myöhemmin pitääkin tehdä myös itse, mutta vakiotoiminnot ovat helppokäyttöisiä ja hoitelevat paljon automaattisesti.

Toiminnot eli actionit ovat index, new, create, show, edit, update ja destroy.

Index on se mitä tehdään, kun käyttäjä haluaa nähdä kaikki tietyn tyyppiset jutskat, vaikka kaikki projektit.

New: luodaan uusi jutska mutta ei vielä tallenneta sitä mihinkään. Tätä tarvitaan vaikkapa siihen, kun näytetään sivu "Luo uusi projekti".

Create: luodaan uusi jutska ja tallennetaan se tietokantaan.

Show: näytetään yksi tietty jutska.

Edit: haetaan tietyn jutskan tiedot selaimelle muokkausta varten.

Update: tallennetaan muutokset tietokantaan.

Destroy: tuhotaan haluttu jutska.

Railsissa oikeaan toimintoon pääsee oikealla urlilla eli sillä mitä selaimen osoiterivillä lukee. Rails tulkitsee siitä mitä käyttäjä tai ohjelmoija haluaa. Nämä urlit saa tietoonsa kirjoittamalla komentoriville rake routes.

Siitä sujahtaa näkyville seuraavanlainen Railsin maagisesti koostama käsittämätön töräys:


Valitettavasti kyseessä on erittäin tärkeä lista, joka ymmärtäminen on ihan keskeistä.

Melko pitkään piti tukkaa nyhtää, mutta nyt tajuan mistä tuossa on kysymys. Otetaan yksi rivi esimerkiksi, vaikka se kaikkein pisin.

edit_project_goal_task GET    /projects/:project_id/goals/:goal_id/tasks/:id/edit(.:format) tasks#edit

edit_project_goal_task on se Railsin apukomento, jota käytetään, kun halutaan päästä task-controllerin edit-toimintoon.

GET on se HTTP-verbi, jota käytetään. En tästä sen enempää vielä tiedä, mutta verbillä on merkitystä,  kun sama url voikin viedä tapauksesta riippuen eri toimintoihin.

Sitten se url-osuus. Kun tuota edit_project_goal_task -apulaista kutsutaan, sen pitää tietää mikä projekti ja mikä tavoite ja mikä tehtävä, että se tietäisi luoda oikean urlin. Sille pitää jotakin kautta antaa ne puuttuvat tiedot eli :project_id, :goal_id ja :id. (Enimmät taisteluni Railsin kanssa olen käynyt juuri noista id:istä.)

Viimeinen sarake kertoo, mistä controllerista ja mistä toiminnosta on kysymys.

Ei kommentteja:

Lähetä kommentti