Velkommen til Ruby on Rails fra Scratch Week 2. Forhåpentligvis vil denne oppfølgeren til uke 1 bidra til å fremme din utdanning i Rails. Denne uken vil vi gjøre litt mer med å få en faktisk side oppe og kjører. Vi vil også arbeide med å legge til mer interaktivitet ved å legge inn rubin i HTML og lære litt om variabler. Etter det vil vi lære mer om Rubys vakre nettadressestruktur og hvordan å manipulere det, pluss andre ting også. Dette kommer definitivt til å bli en pakket uke!
I forrige uke fikk vi rammen satt opp, og lært litt mer om rubin og skinner. Vi lærte da å lage en ny applikasjon og generere en kontroller.
Nå som vi skal komme inn i Rails Syntax, trenger vi en god redaktør. Siden skinner er et relativt nytt rammeverk, har det ikke ganske mange syntax-støttede redaktører. Heldigvis er det fortsatt svært gode der ute. For Windows, bruker jeg personlig Tekstredaktør. Den har stor støtte for rubin, og har automatiserte skript for mange språk. E tekstredigerer forgrenet av suksessen til det eksklusive mac-programmet TextMate. Den eneste ulempen til begge er at de ikke er gratis. Hvis du leter etter noe gratis, kan du alltid gå med den pålitelige Notisblokken ++.
Som du kanskje husker fra forrige uke, endte vi med å opprette en kontroller som vi ringte lære. Dette vil lede oss inn i dagens veiledning. Vi skal nå bruke den kontrolleren, og opprette en handling i kontrolleren. Vi vil da også opprette en tilsvarende visningsfil. Visningen er komponenten av MVC-arkitektur som vanligvis inneholder all HTML, og er derfor en innebygd rubin-fil (rhtml).
Nå som vi har generert lærekontrolleren, kan vi se rb-filen ved å gå til app / kontrollere / learn_controller.rb. Akkurat nå bør du se følgende kode allerede der:
Denne standardkoden tillater denne kontrolleren å arve standardprogramkontrollene.
Vi må nå definere en metode, spesielt en handling. Denne handlingen kartlegger nettadressen for visningen. For å definere en handling som heter mer, vi skriver inn følgende kode:
Vi kan velge hvilket som helst navn vi ønsker. En god strategi når du velger navnet på handlingen, gir det et navn som har å gjøre med innholdet som vil være der. Du bør også velge navnet i henhold til ønsket URL. Kontrolleren og handlingen kartlegger nettadressen. For eksempel, for å komme til "mer" siden, ville du skrive inn, localhost: 3000 / learn / more. Faktisk, la oss prøve det og se hva som skjer:
Ups ... som du kan se fra den nyttige feilmeldingen, må vi fremdeles se på.
I motsetning til kontrolleren, for å lage en visning trenger vi ikke å generere den gjennom konsollen. I stedet kan vi bare lage en ny fil. Når vi genererte kontrolleren, lærer du, har du kanskje sett at en katalog (kalt lærer) ble opprettet i app / visning-mappen. Vi må opprette en .rhtml-fil inne der, og kaller den handlingen vi definerte i kontrolleren.
Et bilde er verdt tusen ord, så her går du:
Og nå, for å teste siden, legger vi til litt HTML og ser hva som skjer. Jeg har nettopp lagt til en grunnleggende nødvendig HTML, og så litt dummy tekst og tittel. Du kan sette alt du vil her.
Lagre det, og la oss prøve det ut igjen.
Flott det fungerer! Gratulerer, du opprettet din første side i Rails. Selv om det ikke er mye nå, har du nå en grunnleggende forståelse av hvordan du lager et grunnleggende skinnprogram.
Ruby on Rails har noen paradigmer som følger med. For eksempel, når du bygger et program i skinner, når du genererer en kontroller, kapitaliserer du det og gjør det entall. Selv om vi ikke kapitaliserer den nåværende kontrolleren vi jobber med, er det en god vane å komme inn når du bygger virkelige applikasjoner. Jeg husker da jeg lærte Rails for første gang, det frustrerte meg at alle veiledningene jeg leste, nevnte et paradigme her og der, men aldri listet dem alle på ett sted. Jeg vil ikke gjøre det samme for deg! Men hvis jeg forklarte dem alle nå, ville det ikke synke også, som om du visste mer om hver komponent. Så ikke bekymre deg for det for mye nå, og jeg vil forklare det senere i denne serien.
Anmeldelse
I forrige uke lærte vi å legge inn skinnekode i en rhtml-fil. Hvis du husker, a <% -%> er behandlet kode, men inkluderer ikke noe som faktisk vil bli utgitt til brukeren. På den andre siden, <%= %> koden vil bli utgitt.
Matematikk tid
Du kan gjøre matte lett med rubin. For dette eksempelet opprettet jeg en ny handling i læreregulatoren kalt matematikk. Vi skal gjøre noen enkle matte som vil bli innebygd i tagger over. Her er hva vi skal skrive:
Math Demo Vil den skrive ut 4 +5 eller 9?
Som du kan se, gjorde det matte for oss:
Stringkonsentrasjon
Du kan lage en streng i rubin ved å bruke sitater. Du kan til og med kombinere strenger sammen ved å sammenkoble dem sammen. Det er flere måter å gjøre dette på. Den mest logiske, er å behandle det som matte:
String Demo <%= 'This is kind of boring' %>
<%= 'Will I combine' + 'With You?' %>
Når vi skriver ut dette, viser vi hvor nøyaktig rubin er skjønt. Legg merke til at det ikke er plass mellom kombinere og med. For å legge til et mellomrom bare legg til ett før tilbudet på slutten av kombinasjonen eller før med.
De er begge veldig viktige. Jeg nevner dette igjen, så du får tydelig deres formål. Liktegnet bestemmer om brukeren ser det eller ikke. Hvis vi skulle gå tilbake til den siste koden og ta ut likestegnet fra begge delene, ville vi bare ha en tom side. Nå, hvis du tilordner en variabel eller noe som ikke fysisk gir noe, må du ikke sette = tegnet,
Tegnet er ikke nødvendig, men en god vane å komme inn på. Hvis du ikke bruker = tegnet, legg deretter et tegn, når du lukker den innebygde rubinen. Dette eliminerer den hvite plassen som ellers ville bli satt inn i koden. Dette kan i svært sjeldne tilfeller ødelegge prosjektet.
Vi kan ikke gå videre uten å diskutere variabler. For de som ikke har noen erfaring med Javascript, eller et hvilket som helst serversspråk, vet du kanskje ikke hva en variabel er. Tenk på en variabel som noe som lagrer litt informasjon. Du kan da analysere disse dataene og manipulere det ved å ringe det ved navn.
Tilordne en lokal variabel og vise den
Tilordne en lokal variabel er ganske enkelt. Her er hvordan du vil tilordne den og deretter vise den. Du kan gjøre dette i en linje, men jeg viser forskjellen mellom innebygd bearbeidet rubin og innebygd og vist rubin (likestillingsgjenesten igjen :)):
Variabel demo <% text = 'This is a Variable' -%> <%= text %>
Og her kan du se resultatet:
Tilordne en instansvariabel og vise den
Problemet med lokale variabler er imidlertid at de er ... lokale. Hva om vi må tilordne en variabel i kontrolleren, og vise den i visningen? Det er hvor instansvariabler kom inn. En instansvariabel er satt bortsett fra en lokal variabel av @ -tegnet som er satt foran navnet. Vær oppmerksom på at både forekomst og lokale variabler (så vel som de fleste andre typer) ikke kan ha store bokstaver og ingen mellomrom.
For å demonstrere hvordan vi kan passere dynamisk innhold mellom kontrolleren og visningen, må vi først sette inn koden i lærerkontrolleren. Nå har jeg lagt til flere definisjoner for alle de ovennevnte demoene. Her er den nåværende lærekontrollen. Som du ser, har jeg tildelt en instansvariabel i variablene. Når brukeren ber om denne handlingen, ser Rails opp definisjonen, behandler den og sender den til visningen (i dette tilfellet verdien av variabelen):
klasse LearnController < ApplicationController def more end def math end def strings end def variables @text = 'Why Hello' end end
Nå skal vi referere til variabelen i visningen:
Variabel demo <%= @text %>
Visst nok, blir variabelen overført til visningen.
Denne uken lærte vi om å sette opp handlinger i kontroller, definere visninger, lokale og øyeblikkelige variabler. Jeg håper at du fant alt nyttig! Neste uke blir det enda mer spennende. Jeg planlegger å fullføre grunnleggende om samspillet mellom kontrolleren og visningen. Forhåpentligvis vil vi også ha tid til å lære mer skinnteknikker også! Etter det blir det bare mer spennende! (Ruby syntaks, arbeider med databaser, stillas, etc.). Uansett, hvis du har noen spørsmål, sørg for å gi meg beskjed; og jeg vil være sikker på å komme tilbake til deg!
Som alltid, vennligst Digg dette hvis det hjalp deg!