>> GABRIEL GUIMARAES: Dette er CS50.
Velkommen til Amazing Web Apps med Ruby on Rails.
Så for alle, der er interesseret i web udvikling og lave hjemmesider, web
applikationer, Ruby on Rails er dette fantastisk værktøj, der Twitter, GitHub,
Groupon, og alle mulige virkelig rart, og store, er web-applikationer ved hjælp af i
de sidste par år.
Og det er en rigtig, rigtig cool funktion, en cool værktøj,
fordi det er nyt.
Så det har alle de nye magtfulde indarbejdet teknologier i en
ramme, som hjælper dig med at håndtere alle mulige fantastiske ting.
>> Men hvad er en ramme?
Så rammer er dybest set noget, der skaber -
når du starter en hjemmeside, hvis du startede fra bunden, ligesom du åbner
gedit der, og du ønsker at kode alle i din HTML og kode alle dine
PHP, alle dine CSS, alt fra bunden -
der er bare at være en masse arbejde.
Og en ramme bogstaveligt talt giver dig halvdelen af ​​hjemmesiden gjort.
Så du starter med en halv hjemmeside der har alt der for dig.
Ligesom database forbindelser, og alle mulige ting, du skal bekymre dig
om, hvis du gør det fra bunden, du behøver ikke at bekymre sig om dem,
detaljer lavt niveau.
>> Men i dag vil vi til at eksportere en af de hjemmesider, som freshman af
klasse af 2017 er formentlig bekendt.
Så denne hjemmeside er den hjemmeside, som jeg gjorde for vores klasse i løbet af sommeren.
Det var en hjemmeside, hvor de studerende på klassen af ​​2017 kunne logge ind og
interagere med hinanden.
Og så er det et kort -
alle, hvor folk er.
Og vi havde en bog spil, et sangene spil hvor vi så folks sange og
folks bøger.
Hvad de kan lide at læse, hvad de kan lide at lytte til.
Og den mest interessante del af det er at det bogstaveligt tog mig tre timer
at kode det hele.
Fordi hvis jeg havde at gøre alt fra bunden, som åbner gedit det
ville sandsynligvis have taget me 20, 30 timer.
Men med Ruby on Rails, fordi alt var allerede sat op for mig,
det tog mig kun tre eller fire timer, eller noget lignende.
>> Så hvad er Ruby on Rails.
Ruby on Rails, igen, som vi allerede sagt, er en ramme.
Dette er et billede af en ramme.
Så du kommer til at begynde at bygge en hus, har du allerede halvdelen af
hus gjort.
Det er rammen.
Og Ruby on Rails er præcis sådan.
Og du skal tænke på det som, du starter en hjemmeside, du starter din web
ansøgning, vi allerede har halvdelen af ​​det gjort der.
Men først og fremmest, hvad er Ruby?
Ruby on Rails bruger den model, view controller, som er paradigme, som
er en virkelig interessant -
og alle de programmer i dag bruge noget lignende.
Denne idé om at adskille tingene i tre dele, modellen, udsigten, og
controlleren.
Vi kommer til at snakke lidt mere om det senere.
>> Først, hvad er Ruby?
Så dette er Ruby.
Og det er et symbol på den sprog kaldet Ruby.
Ruby er en af ​​de newish fortolkede sprog, så script.
Det er et sprog, der ikke er kompileret Ligesom C. Det er udarbejdet på flugt.
Så det er godt, fordi, ligesom PHP, for eksempel fortolkes også er
ikke kompileret.
Det er godt, fordi dens bærbare.
Så du bare videregive din kode fra én maskine til en anden.
Fra en Linux-maskine, til en Windows maskine, til en Mac eller Apple-maskine, eller
noget lignende.
Og du behøver ikke at bekymre dig om oplysninger om hver af de specifikke
operativsystemer.
Det kommer til at arbejde overalt.
>> Og Ruby er et sprog, -
jer sikkert huske dette.
Folk bruger hash-funktion implementeret i C for hash tabellen
i sidste uge og havde alle mulige af segmentering fejl.
Og så tingene skulle bekymre sig om denne streng jeg der, strengen i
her, var faktisk små bogstaver eller store bogstaver, eller disse slags bekymrende
detaljer lavt niveau.
Godt i Ruby, hvis du ønsker at gennemføre en hash tabel, det er præcis, hvordan du
skabe en hash tabel.
Du siger, ordbog, det er navnet min variabel = "Hash.new".
Og så ordbog ["foo"], og når jeg er tilføjer foo til min hash tabel, er jeg
bare at sige foo er der.
>> Og så hvis jeg ønskede at kontrollere, om foo var der, jeg bare sige, hvis
ordbog ["foo"] == true afkast sandt.
Whoa, og det er din hash tabellen.
Det er gennemførelsen af hash tabellen i Ruby.
Så alle ønskede de kunne have brugte noget som Ruby til sidst
uges PSET, right?
Vi har alle mulige grunde til at ønske at bruge et sprog som Ruby.
Ruby har perler.
Perle er et navn for en slags bibliotek i Ruby.
>> Så alle mulige interessante funktioner at du kan have, for eksempel, hvis jeg
ønsker at integrere min ansøgning.
At Harvard 2017 ansøgning blev integreret til Facebook.
Så man kan logge ind via Facebook, til app.
Så hvis du vil gøre det, behøver du ikke behøver at bekymre sig om at sende nogle
HTTP-anmodning til Facebook, og venter for svaret, og tvinger
respons, og bla, bla, bla.
Du skal bare hente den perle, gør alt det for dig.
Og så behøver du ikke behøver at bekymre sig om alt dette.
>> Og så masser af hjælp online, selvfølgelig.
Der er mange, mange, mange hjemmesider, kommer til at hjælpe dig både med
Ruby og med Rails.
Og det er masser af sjov at kode.
Præcis fordi du kan stoppe bekymrende om disse ikke så sjove problemer.
Ligesom hvis noget er små bogstaver eller stort bogstav, og så hvorfor er dette
giver dig en segmenteringsfejl, og du virkelig kan dykke ned i meget
interessante ting.
At dykke ned i de rigtig seje problemer.
>> Så Ruby er ligesom til C i en vis forstand.
Så det kommer ikke til at være, at stort et spring faktisk.
Så sætter, det er vores print app i Ruby.
Jeg tror, ​​du kunne bruge print også, men sætter er, hvad alle bruger.
Så sætter blot "Hello World".
Du kunne, eller du kan ikke have parentesen omkranser
"Hello World" der.
Du kan bare vælge, om eller ikke at bruge den.
Og så x = "1".
En while-løkke ser temmelig det samme.
Det bare har mindre syntaks.
Det er lidt renere en lille smule.
Og derefter, hvis x> 25 puts "Big!" og ellers sætter "Small ...".
Og det er sådan C i den forstand.
>> Så hvis man ser på det, kan du fremgangsmåde sandsynligvis forstå
alt, hvad der foregår.
Men det er mere kraftfuld.
Mere magtfulde, fordi, mere end det, det kan gøre tingene er ikke det -
en slags hackage en lille smule.
I C kunne man ikke gøre i bare gøre med én linje.
For eksempel sætter "Jeg er # {x}".
Dette er blot syntaks for at sætte værdien af x her, og ikke udskrive
tegn x.
I C du havde at gøre procent d, og derefter sætte op variablen x efter
komma her, eller noget lignende.
>> Og i Ruby der er en forkortelse for bare at gøre det.
Og sætter dette, hvis x> 3, så du kan sætte hvis alle på én linje.
Og så en liste.
Lister i C, ligesom et array, er du nødt til holde styr på hvor stor din array er eller
ellers får du en segmentering fejl.
Array er kun én type.
Så det er enten en vifte af afgift eller et array af heltal.
I dette tilfælde, jeg oprettet en liste her, det er et array, der har den første
element er en snor, John, og derefter fire, to - de er heltal.
Og så vil jeg bare tilføje, liste, den Venstre Vinkelbeslag, Venstre
Vinkelbeslag, tre.
Det betyder blot tilføje noget til min liste.
>> Så det er lidt mere interessant, fordi hvis du ønsker at bruge dette som
bare en simpel liste af heltal, du kunne, totalt.
Det er helt fint.
Bare sætte heltal der.
Men hvis du ønskede at gøre noget, der er mere overbevisende, som har andre
ting, der har -
Jeg ved det ikke, alle slags lister i der, eller andre genstande, der er mere
interessant, kan du helt gøre det.
Det er helt fint.
Og hvis du ønsker at gentage gennem listen, kan du bruge
mere C-ish form for tilgang.
Det er for-løkke, at du indleder en variabel, i = "1", eller i = "0".
Og så skal du gå, og gentage, og få alle elementerne.
>> Men du kan også bruge denne mere Ruby-lignende tilgang.
Det er ligesom en list.each.
Det er bare at sige, vende mig alle elementer i listen.
Og gøre med hvert element, kalder dem elem.
Så dette er blot et navn, som jeg er give til hvert element.
Og nu dette kommer til at gentage for alle de elementer, og elem, går det
at være den måde, som vi adgang at enkelt element.
Så du kunne helt holde sig til C tilgang, men det virker også.
Og det er nøjagtig det samme, OK.
>> Og bortset fra, at det er rigtig, virkelig nemt at integrere Ruby og HTML
Da du fyre er interesseret i webapplikationer.
HTML er afgjort noget, du kommer til at bruge en masse.
Og her, hvis du ønskede at sætte Ruby i HTML, bare starte her, <%.
Det betyder, her Ruby starter.
Og så%>, lidt ligesom PHP i den forstand.
Her Ruby slutter, og så kan du bare sætte dit hvis i her.
Og så har jeg nogle variable user.logged_in.
I Ruby, vi normalt tilføje dem enten forhør mærke eller udråbstegn
mærket, som en bank karakter, blot at slags
skelne mellem vores funktioner.
Men du bare sætte det for din egen skyld.
Det er ikke noget, der ændrer noget i funktionalitet.
>> Så bare for at minde mig om, at dette er en funktion - og funktioner i Ruby,
snarere end C, som jeg sagde allerede, de behøver ikke parenteser.
Så logget på ting, der er en funktion, der er en metode.
Men du behøver ikke eksplicit behøver at sætte parentes derinde.
Så bare at spørge, hvis brugerens logget ind, og hvis brugerens logget ind, nu
HTML starter igen.
Så velkommen, og her Jeg udskriver user.name.
Og det er det.
Så det er ret ligetil, hvordan du integrerer Ruby med din HTML.
Og ressourcer, som jeg sagde, er der alle former for ressourcer til Ruby.
Du fyre kan alle se det op bagefter fordi både video og
dias, kommer til at være tilgængelige online.
>> Og lad os nu komme ind i Rails.
Rails er kærlighed.
Rails -
så Ruby er hans sprog.
OK, ligesom PHP, ligesom Python.
Det er et højt niveau sprog, ikke kan lide C. C'er en mellemvej, sprog lavt niveau i
den forstand, at Ruby behøver du ikke at bekymre sig om hukommelse omfordeling, og
pegepinde, og den slags ting.
Men Rails er dette program, blev skrevet i Ruby.
Og det bruger Ruby, for at få denne rammer for dig at være i stand til at
bygge fantastiske webapplikationer.
>> Så du er nødt til først at installere Ruby on din maskine, men de fleste maskiner
allerede har det.
Og derefter installere skinner på toppen af ​​det.
Vi kommer til at tale om det senere.
Og hvorfor Rails?
Så MVC, det er den model view-controller vi talte om lidt
bit, gør alting enklere, fordi den deler ting, der er
begrebsmæssigt forskellig i forskellige dele af din ansøgning.
Mindre tid brugt på problemer lavt niveau, igen, og meget, meget
populære lige nu.
Så for alle dem der er interesseret i opstart scene, eller i noget
som at starte virksomheder, og folk på markedet for teknologi, der er
starte deres egen virksomhed lige nu er virkelig, virkelig fans af Ruby on
Skinner, fordi det er så hurtigt.
>> Så du kan få noget op at køre på mindre end en dag, og det er
virkelig en meget overbevisende argument for at bruge Ruby.
Og skinner 4,0 -
det er meget frisk fra ovnen nu.
Så Rails 4,0 -
Jeg tror, ​​den første udgivelse var i marts i år.
Og det er virkelig rart, det har alle mulige former for nye, smarte funktioner.
Så Ruby on Rails er en ramme, der er konstant opdateret til at have alle
af den nye teknologi.
>> Første gang jeg forsøgte at bruge Ruby on Rails, jeg havde dette problem, fordi jeg
lavet min første web-applikation, og det lignede det.
Så det skaber alle disse filer til dig, og jeg havde ingen idé om, hvad -
hvad er det?
Det skabte alle disse filer, og kun jeg ønskede at skabe et simpelt program, en
simpel HTML hjemmeside.
Og jeg kunne ikke engang gøre noget.
Så jeg var lidt overvældet.
Men det er en ting, når du forstå det, alt bliver så
meget klarere.
Så du skal ikke blive overvældet af den første synet af det, du skaber i første omgang.
>> Så hvad der sker, er Rails skaber alle disse filer.
Så en af ​​det er doc, dokumentation.
Db, der er relateret til databasen.
Lib, der er biblioteker log.
Public, script, og nogle ting.
Temmelig meget alt du kommer til at bekymre sig om, er den app mappe, deroppe.
Det er den mappe, der indeholder din ansøgning.
Alle de andre filer -
nogle af dem er vigtige, og du er kommer til at lære om det senere.
Men de er her kun for at indeholde rammer.
Så de første hjørnesten i huset du fyre er ved at opbygge, OK?
>> Men den app mappe -
det er det virkelig vigtigt.
Og app mappe har aktiver.
Aktiver er temmelig meget alt der kommer.
Billeder for eksempel, alt hvad der er statiske, der kommer til at blive hentet
til dit websted.
Så billeder, JavaScript, CSS -
den slags ting er aktiver.
Controllers -
vi kommer til at tale mere om hvad er controllere, modeller,
og felter i et sekund.
Og hjælpere er funktioner, som du kan bruge hele din kode
at hjælpe dig med at gøre noget.
Funktioner som logget ind, for eksempel - user.loggedin.
Det er en funktion, som du sandsynligvis nødt til at bruge i alle dele af din
ansøgning.
Så du kan sætte noget lignende der i din hjælper.
>> Afsendere -
det er hvis du kommer til at sende en e-mail til dine brugere, du
ønsker at bruge en mailer.
Og modeller og synspunkter, vi kommer til at tale om det lige nu.
Så model opfattelse controller, der er den grundlæggende hjørnesten i Ruby on
Skinner, og de fleste rammer dag, for at være ærlig.
Så igen, vi adskille alle vores kode i tre forskellige dele.
Modellen -
modellen principielt databasen.
Det håndterer tingene i databasen.
>> Så hver tabel i databasen har en tilsvarende fil inden for modellen.
Så det er lidt af en tabel for dine brugere.
Så du lagring af oplysninger som brugernavn, deres e-mails, deres
adresse, deres adgangskode, og sådan noget.
Du kommer til at have en fil i modellen kaldte bruger rb -
rb for Ruby.
Og der kommer til at have alle af de metoder og variabler.
Variablerne vil svare til brugeren navn, e-mail og
alt.
>> Og du kommer til at have de metoder.
Det vil være noget om -
du kommer til at håndtere denne information i databasen.
Sådan opretter du en model med Rails, du bare bruge Rails genererer.
Og for at skabe ting i Rails, du faktisk har brug for terminalen.
Så det er en meget terminal baseret ramme.
Du skal bare logge ind på terminalen, og gør Rails, generere model.
Og navnet på den model er brugeren.
Og jeg vil bare have to variabler, to kolonner, i mit bord.
Så det er e-mail.
E-mail er en streng type.
Password, password er også en streng type.
De er de eneste to ting.
Det er lidt af en forsimplet bruger tabel.
Men du kan helt sætte et hundrede ting er der, hvis du ville.
>> Og Rails gør det også meget, meget enkel at have alle
former for database relationer.
Så normalt, når du har tabeller i din database, de er ikke meget
uafhængige af hinanden.
Lad os tænke over.
Du ønsker at købe og sælge produkter online.
OK, så du har en hjemmeside, hvor du ønsker at købe og sælge produkter.
Så hver bruger har mange produkter, denne bruger er villig til at sælge.
Og hver bruger har også mange transaktioner der er i gang, eller
noget lignende.
Og transaktionerne er med en anden bruger.
Hver transaktion tilhører to forskellige brugere.
Brugeren, der er at købe og den bruger, der er sælger.
>> Så dem er den såkaldte database relationer.
Og her har vi netop de søgeord, har mange og tilhører.
Disse er de vigtigste.
Og du vil bare sige, for Dette er eksempelvis et eksempel på en
model i Harvard 2017 hjemmeside.
Igen, de studerende i her -
hver elev på hjemmesiden, studerende er en model, er en database tabel.
Hver elev havde mange bøger, fordi du kunne sige, hvad er din favorit
bøger, til højre.
Så hver bog tilhører en elev hernede.
Og attribut tilgængelige -
der er bare at sige, de er de variabler.
De er de variabler tilgængelige fra denne model.
Og variablerne er forfatter til bogen, beskrivelse, genre og
bogens titel.
Så bare oplysningerne om bogen.
>> Og her har jeg en metode, der simpelthen sorterer alt.
Så definere og slutter her, det er bare sige, her kommer min metode.
Self.sorted_all.
Det er bare, at give mig alt sorteret, og det er hvordan du implementerer
sortering algoritme, som er forholdsvis let.
Men dybest set, det er sådan en model ser ud, OK.
Er der nogen der har spørgsmål vedrørende denne database ting?
Relationer?
Er det forstået?
Ja.
>> PUBLIKUM: Kan du gøre den slags algoritme?
>> GABRIEL GUIMARAES: Den sortering algoritme, OK.
Når du vænner dig til Ruby syntaks, det kommer til at være klar.
Men dybest set, elems er Book.all.
Så bogen er navnet på min model.
Når du opretter en model, det kommer med alle mulige gode metoder for dig.
Så dot.all er en metode, returnerer alle bøger.
Men finder, for eksempel, ville søge efter én bog og returnere den bog, eller
noget lignende.
Og så elems er alt.
Og jeg siger bare elems.sort.
Sorter er en indbygget Ruby funktion.
>> Og, gør AB.
Så dette gør igen er -
du kommer til at sortere.
Men du kommer til at få dette argument for mig.
Og argumentet bruger - dette er en af de hårdere ting i Ruby Faktisk,
dette gør ting.
Men når du forstår det alt kommer meget, meget intuitiv.
Så ab, dette siger det sted holdere, som jeg har tænkt mig at bruge - ligesom
de variabler, jeg har tænkt mig at bruge, er kommer til at hedde a og b..
Og det er de bøger.
>> Så fordi slags behov for at sammenligne elementer, huske det?
Så når du sortere tingene, du sammenligne to elementer.
Jeg har tænkt mig at sige, at hver gang du kommer til at sammenligne -
så dette er, jeg passerer for at sortere et argument.
Og argumentet er alt fra do til og her, OK?
Og dette argument er bare at fortælle sortere hvordan man kan sammenligne.
Sorter ville arbejde her, men det ville sammenligne med deres
standard sammenligne algoritme.
Jeg vil have den til at sammenligne i en meget specifik måde, nemlig når bogen
blev oprettet, da hver Bogen blev oprettet.
>> Så jeg siger, siger navnet på den første bog er en og navnet på den
anden bog som b, jeg vil sortere sortere noget, der bygger på b.created_at dette
mærkelige symbol, a.created_at.
Og det underlige symbol er stenografi for hvis man er større end den
anden, tilbage 1.
Hvis man er lig med den anden returnere nul.
Hvis man er mindre end den andre, afkast minus 1.
Så det er hvad der underligt symbol er.
>> Men det er ikke vigtigt.
Jeg mener, hvad jeg vil have jer til at få nu er tanken, at databasen -
du kan have den model der.
Så du behøver ikke at bekymre dig om tilslutning og brug af SQL-sætning,
og sådan noget.
Det kan også skabe dørene til SQL-injektion og alle
mulige sikkerhedsproblemer.
I dette tilfælde behøver du ikke bekymre sig om det.
Du skal bare bruge metoder som book.all.
Og det i baggrunden naturligvis kommer til din database, og det er
vil bruge en SQL-sætning at få alle de bøger.
Men du behøver ikke at bekymre sig om det.
Det er takeaway, OK?
>> Og når du har en belongs_to erklæring som dette, det betyder, at
når du har en bog objekt, du kan se, hvad er dens studerende.
Så der studerende har denne bog?
Så kan vi bare bruge book.student, og der giver dig, hvad den studerende er.
Og det er en rigtig feature at have.
>> OK, nu udsigten.
Så modellen er, hvad der interagerer med databasen, right?
Udsigten er dybest set HTML, og CSS, og nogle JavaScript.
Og det er, hvad brugeren faktisk ser.
Brugeren kommer ikke til at se din database.
Han kommer til at se nogle data fra database indlejret i fremviseren.
Ruby on Rails gør det virkelig enkel at lave felter.
For det første fordi det allerede skaber det for dig, ud af kassen, et layout.
>> Et layout er dybest set noget, -
hvis alle dine sider har et logo på toppen og, ved jeg ikke, nogle menu eller
noget, at alle dine sider andel i fælles, så du ikke
nødt til at skabe mange, mange, mange HTML filer, hvor alle filerne har,
samme HTML-kode.
Jeg mener, det er dum, fordi du er bare gentage kode mellem forskellige filer.
Det er bestemt ikke en god tilgang.
>> Så Ruby on Rails skaber dette layout for dig.
Og det er bare at sige, alle mine sider kommer til at have denne HTML, dette hoved
titel her, og de er typografiark link tag.
Tilslut her hele mit CSS.
Tilslut her hele mit JavaScript og nogle meta tags.
Det er bare noget, de gøre automatisk for dig.
Og så ender hovedet, nu her begynder kroppen.
Og nu er det mit egentlige indhold.
Så hvis jeg ønskede at sætte noget lignende, en menu her, ville jeg sætte det lige over
dette sted, eller noget lignende, så alle mine sider delte det.
Så layout deles af alle siderne.
>> Nu, hvor udbyttet her bare siger, nej hvilke sider det er i, bare sagen
stik i indholdet af denne side i her, okay?
Og nu er det, for eksempel, Indholdet af en side, der kommer til at være
sat i dette udbytte erklæring automatisk ved Rails.
Men dette er et layout delt alle sider.
Og dette er et eksempel på én side.
Og det er netop den side der viser alle de bøger.
Så dette er en grundlæggende HTML tabel op øverst.
Så notering bøger, en titel, forfatter, beskrivelse, genre.
>> Og her bruger vi, igen, nogle Ruby syntaks @ books.each--
@ Slags siger, at din variabel er global i en vis forstand.
Fordi denne variabel var faktisk erklæret i controlleren, der
du kommer til at se lige nu.
Men bare tage for givet, at dette @ Bøger er en variabel, der er en liste over
alle bøgerne.
Så books.each behøver, og igen, det er bare at sige, hvordan vil du navngive
hver af de iteratorer så vi ikke at bekymre sig om en fire, int i
blah, blah, blah.
Vi skal bare tage hver af de elementer og bruge dem.
>> Så er dette bogen, og så bare udskrive her. book.title, book.author,
book.description og blah, blah, blah.
Og her er en link_to.
Så link_to er bare et link tag at en bruger kan klikke på og
går til en anden hjemmeside.
Link_to, viser den pågældende bog.
Så hvis brugeren er meget interesseret i denne bog, så han kan klikke på show.
Eller klik på redigere, hvis han vil at redigere bogen.
Eller ødelægge, hvis han ønsker at slette bogen fra databasen.
OK, betyder det giver mening?
Godt.
>> Endelig controlleren.
Så dybest set regulatoren grænsefladen mellem
model og udsigten.
Så modellen er den del af dit kode, har database -
hver tabel i database en respektiv fil i
model, og så videre.
Og hvordan gør modellen og visningen interagere?
Så gennem regulatoren.
Hvad en controller gør, er det den model for sådan noget, for eksempel,
lægge alle af bogen inde af en variabel.
Ligesom denne ene, @ bøger.
>> Og det skal være globalt med dette på ting, fordi det vil være
tilgås af visningen.
Det kommer ikke til at blive brugt inden for selve controlleren.
Og det bare forsinker oplysninger, visningen vil bruge.
For eksempel kontrolenheden hvis brugeren er online.
Og hvordan gør den det?
Det faktisk anmoder model da modellen har
information om brugeren.
Det har en brugers tabel bøgerne bord, andre tabeller.
Så controlleren spørger, om brugeren er online.
Hvis brugeren er online styreenheden håndterer ting som at sætte en cookie,
eller sådan noget, for at sætte præg sige, at brugeren er online.
Ingen grund til at logge ind igen.
>> Og det kommer til at indlæse en variabel kaldet bruger, for eksempel, at
visning kan bruge.
Og udsigten kan lægge noget her, for eksempel, velkommen user.name.
Så det kommer til at sige, velkommen John, velkommen James -
sådan noget, ikke?
Så alle de variabler, der anvendes i view vil blive lagt i
controller og vil være trukket op fra modellen.
>> Dette er et eksempel på en styreenhed.
Så vi har dybest set, hver -
vi kalder de ting handlinger.
Så indeks er en handling.
Det er en Ruby funktion.
Det er en Ruby metode derinde.
Men for controlleren opkald de ting handlinger.
Og hver handling er relateret til en rute.
Så her denne rute, for eksempel, er en get Redegørelse / bøger.
Så hvis du går til harvard2017.com/books, hvad der kommer til at ske, er denne kode er
kommer til at hedde.
>> Og der er en fil -
lad mig åbne denne virkelig hurtig.
Der er en fil kaldet rå fil.
Det er ikke åbne.
Så der er en fil kaldet rå fil der dybest set matcher -
åh, nu er det åbne.
Her ruter.
Så dybest set matcher en stamme, aktivering / nyt for eksempel til
noget i controlleren.
Så der er denne controller kaldet aktivering controller, men herude,
vi har bøger, for eksempel.
Så matcher -
bøger / nyt, til controlleren bøger, handlingen nyt.
Så dybest set, meget ligetil ting.
>> Og her, hvis du skulle få / bøger, skråstreg ID af bøgerne, skråstreg nye,
du kommer til at gå til den pågældende Ruby metode dernede.
Så her, hvad dette indeks gør er bare indlæser bog log.
Det er noget, -
Jeg logger alle bøgerne i en log.
Og sortere det hele.
Så det vil vende tilbage alle de sorterede bøger.
Dette er igen i databasen.
Så det er en metode til modellen.
Du så denne metode er skabt i modellen.
Nu er det bare at indlæse alle de bøger og sætte dette i en variabel,
kan ses ved visningen.
>> Fordi du ikke kan, i midten af din HTML-kode, kan du ikke ringe
noget direkte fra modellen, fordi to grunde.
Først, af sikkerhedsmæssige årsager, fordi det er ikke rigtig interessant at være
lastning information direkte inde hver HTML, der er i databasen.
Og for det andet, for at holde din kode virkelig organiseret.
Så adskille nøjagtigt forskellige dele.
Så BookLog.sorted_all, dette i database, og det kommer til at sætte i
en variabel @ bøger.
Og nu denne variabel er tilgængelig i din HTML-kode.
Så du kan bare sætte alle de bøger, der ligesom vi gjorde, lige her.
Dette er variabel.
>> Og besøg respond_to gøre | format |, dette er blot en slags Ruby syntaks for
hvis brugeren beder mig om HTML-kode, jeg har tænkt mig at
reagere med HTML-kode.
Hvis brugeren spørger mig med JSON kode, hvilket er noget, web apps bruger
at kommunikere indbyrdes, de plejer at bruge JSON eller en anden
slags ting.
Så det bare reagerer ved hjælp af de to forskellige formater.
Men for en almindelig bruger dette behøver ikke at være her.
Du ville bare reagere med HTML, og det er fint.
Så ikke rigtig bange for, at meget om dette.
Dette er den eneste linje kode i vores kontrol, som det er læsning fra HTML
database, i færd med noget, der er tilgængelige ved udsigten.
>> Og så nyt, så her Jeg skaber bøger.
Men for at skabe bøger, jeg har brug for en studerende fordi jeg har brug for at kende den studerende
hvis bøger denne tilhører, til højre.
Så @ elev = Student.
Studerende, igen, vi starter med et stort S er den model studerende.
OK, så det er den model student, det er den model bog log.
Student.find, så jeg har tænkt mig at finde en student ved hjælp af parametrene ID.
params.id er dette bare få mig værdien dette id, der blev vedtaget -
og URL'en.
>> Bare kommer til at søge efter denne elev.
Og først, vi kommer til at kontrollere hvis den studerende har nogle sange
og blah, blah, blah.
Og dette allerede håndterer tilfældet, når eleven
ikke eksisterer, for eksempel.
Og så, ellers, vi bare reagere til de samme ting ved hjælp af HTML.
Og så kan vi lade brugeren skabe deres sange.
Så dette er nyt.
Nye er normalt bruges til, så lad brugeren skabe noget.
Og så er der skabe handling der er normalt bruges til -
faktisk lægge sangene i databasen eller noget lignende.
Men når du begynder at bruge Rails, disse ting vil være
meget mere klart.
OK, afkøles.
Eventuelle spørgsmål, så vidt?
Er det fornuftigt med controllere, modeller, marker -
ja?
>> Igen i din Rails ansøgning -
så alle, der kan findes her.
Så du har app, controllere, der er alle mine controllere.
Så for eksempel bøger kontrollere.
Det er den, vi lige har set.
Og så synspunkter.
Og hver regulator har en tilknyttede visning, right?
Så automatisk, når du kalder dette indeks her, for eksempel, eller når du
kalde dette bøger nye, så det synspunkt, bøger, er ny kommer til at hedde.
>> Så Rails gør alt automatisk for dig.
Så hver controller har en tilhørende se og alle modellerne -
her har jeg en, to, tre, fire, fem modeller.
Men det er en student model, så dem er de variabler, at alle
studerende har - lokalisering, fødselsdato.
Studerende er en lille smule mere kompliceret, fordi hver elev har
mere anden metode forbundet til det.
Men dette er blot håndtering af tabel, der havde alle de
studerende i databasen.
>> Og, OK, installere Rails.
Installation af Rails, at være ærlig, er ikke den enkleste ting.
Men når du kommer forbi alt, det er meget, meget let.
Så installere Rails, du bare gå til hjemmeside, rubyandrails.org / download
og følge deres anvisninger der.
Downloade alt.
Og du kan gøre det enten i Appliance, i CS50 Appliance, om
Windows på Mac, eller ethvert operativsystem system af din valg.
Ruby on Rails kører på alt.
>> Odds er du allerede har Ruby installeret hvis du har en Mac eller -
i de apparater, jeg tror Ruby er -
Jeg er ikke sikker.
Og så skal du bare have denne installeret.
Og hvis du ønsker at oprette en ny webapplikation, du bare
gøre Rails, nye, blog.
Rails, nye -
Jeg ved det ikke -
navnet på din hjemmeside.
Og det er så simpelt.
>> Det kommer til at skabe alle dem filer, jeg bare viste dig.
Men modellen, udsigten, og controller vil ikke være
befolket endnu.
Du er bare nødt til at gå der og befolke disse tre mapper.
Så odds er, du ønsker at skabe en model, for eksempel gennemføre en
model først.
Så igen, altid forsøger at bide mindre bits af et problem på et tidspunkt.
>> Og så lad os sige, at skabe en model for dine brugere.
Det er den første ting hvis du har brugere.
Så jeg ønsker at skabe en model ligesom vi viste her.
Rails, generere, model, bruger og derefter emails snor - vi har det her.
Og bare oprette denne model, ja.
Rails genererer model Bruger email: string password: streng.
>> Og så skal du oprette en controller der beskæftiger sig med brugeren.
Og du kan oprette nye brugere og gøre den slags ting.
Og så kan du gå videre til at skabe resten af ​​dit websted.
Cool, spørgsmål?
Ja.
>> PUBLIKUM: [uhørligt]
>> GABRIEL GUIMARAES: Ja, ja, du helt sikkert nødt til at gå ind i visningen.
Det er et meget godt spørgsmål.
Så visningen er hvad der rent faktisk indeholder dit HTML.
Så det er, hvad brugerne kommer til at se.
Igen her er dette en eksempel på en visning.
Det har HTML-kode og Ruby kode på samme tid.
Så Ruby kode er der for at sætte tingene fra databasen, for eksempel,
der blev indlæst i controlleren.
Så variabel @ bøger, for eksempel, har alle de bøger, og tabellen
bøger på databasen.
Vi sørgede for, at det havde i styringen.
>> Og udsigten -
hver af de sider fra din hjemmeside er kommer til at have en tilknyttet visning.
Så hvis du går til startsiden, den allerførste side, harvard2017.com.
Det viser én side.
Og så skal du gå til skråstreg profil.
Det kommer til at gå til en controller det er en profil controller.
Og profilen controller går for at give dig den profil visning.
Og profilbilledet kommer til at se noget som dette, men det kommer til at
har oplysninger om brugeren, og ikke om de bøger.
>> Så det er HTML-kode og CSS, og dem, ting, som en bruger ser
med Ruby kode -
der faktisk udskriver ting fra databasen.
Er det mere klart?
Jeg håber.
>> PUBLIKUM: HTML-kode bruges til at faktisk gøre hjemmesiden, at den
brugeren ser, men Ruby kode er hvad gør hjemmesiden arbejde?
>> GABRIEL GUIMARAES: The Ruby kode bliver konverteret til HTML.
Så hvad får brugeren er kun HTML, OK?
Det er kun HTML.
Denne book.title kommer til at konvertere til værdien af ​​book.title i HTML, OK.
Så det er alt i serveren, og så dette afhænger af, hvad bøger er der
i serveren lige nu.
Men hvad serveren ville straks forstand er kun HTML-kode, OK.
>> Men udsigten bare giver layoutet af hvad HTML skulle ligne
og hvilke variabler vil være.
Denne form af en udskrift, OK.
Disse ting er der dybest set udskrifter.
De kommer til at udskrive variabler, OK.
Så hvad er kun HTML, der -
forfatter, titel, beskrivelse.
Det er statisk indhold.
Det kommer ikke til at ændre.
Det er blot almindelig HTML-kode.
Det er de udskrifter for variabler -
ting, der er afhængige af.
Cool, flere spørgsmål?
Godt?
Ja.
>> PUBLIKUM: Jeg tror, ​​du lavede alle redigering i en anden tekst
redigering program.
Skal vi også downloade det?
>> GABRIEL GUIMARAES: Ja, jeg kan lide det teksteditor kaldet TextMate.
Og det er virkelig godt.
Det er velegnet til Ruby.
Det farver tingene meget pænt.
Så TextMate, T-E-X-T. Jeg har tænkt mig at sætte det, holde på -
>> Jeg mener du kan bruge gedit eller noget, du ønsker.
Men dette er specifikt for Mac, og dette er virkelig nydelige, fordi det sætter alle
dine filer dernede.
Og i Ruby on Rails, du har brug for at skifte filer en masse.
Så det er mange, mange filer blot gå fra den ene fil, springe til
ene eller den anden fil eller.
Så TextMate er en meget god, men der er masser derude.
Flere spørgsmål?
OK, ja?
>> PUBLIKUM: Er der en mobil udvikling gennem Ruby on Rails?
>> GABRIEL GUIMARAES: Jeg har hørt af tingene.
Jeg har ikke brugt dem.
Du kunne forske mere om det.
Jeg er ikke sikker på, om der er nogen god ting derude.
OK, ja?
>> PUBLIKUM: [uhørligt]
>> GABRIEL Guimarães: Ikke Rails, sandsynligvis Ruby array.
Åbn en terminal vindue og type, "Ruby".
Ja, sandsynligvis, og så bare nødt til at installere Rails.
Men hvis du kommer til at installere den nye Rails 4.0, som jeg stærkt anbefale,
du skal hente Ruby 2.0.
Det er den nye også.
Og de nye Rails 4.0 har noget virkelig cool at
det gør at aktiverne.
Det håndterer aktiver.
Aktiver igen er billeder, CSS-filer, og JavaScript-filer.
Så en rigtig pæn ting som Ruby on Rails gør for dig, er alle dem, CSS
filer, som du har, og alt -
det bare bundter alt op i en kæmpe fil, uden mellemrum eller noget,
at minimere den tid brugeren skal hente denne kode fra din server.
>> Så når du ser på din computer, er det nødt til som 15 CSS-filer.
Eller mange, mange forskellige CSS-filer.
Men i slutningen af ​​dagen, hvad Rails automatisk betyder for dig, er det sætter
det hele sammen til én stor fil således at det minimerer anmodningen tid.
Det er virkelig cool.
Ja?
>> PUBLIKUM: [uhørligt]
>> GABRIEL GUIMARAES: Præcis.
Så Google Maps integration.
Det er en JavaScript-API fra Google.
Så jeg gik lige til Google website.
De har denne Google Maps API og jeg downloadet koden og integreret det
ind i mit synspunkt.
Så hvad jeg havde brug for at gøre der er jeg havde brug for at få den
steder fra databasen.
Det blev gjort i controlleren.
Så jeg gik til controller -
hvor er controlleren.
Controlleren lignede dette.
Fik alle de steder i studerende sætte alt dette ind i en stor
variabel, en stor liste, der har alle de placeringer.
>> Og i visningen, fordi JavaScript API er noget i
se, ikke?
Fordi JavaScript kører i din HTML kode, går det til at blive sendt til
brugerens maskine.
Og i visningen, jeg læsset alt dette information i Google API.
Og det gjorde alt dette for mig, som er virkelig cool.
Men hvis du ønsker at bruge ting i back-end, og det er ligesom et bibliotek, for
eksempel, igen -
integrationen med Facebook.
Det er noget, mange, mange, mange apps bruger i dag.
>> Så har din integration med Facebook fordi det er så meget nemmere at bare
logge ind med Facebook end at skabe en konto og blah, blah, blah.
Så kan du bare bruge en perle og det er så simpelt som at gå til din perle-fil.
Gem fil er en fil kaldet perle fil i kilde mappe på din Ruby on
Rails projekt.
Bare gå der og tilføje nye perle.
Og du slå det op på Google.
Der er mange, mange, mange perler.
Der er én, der specifikt gør dette for Facebook integration.
Jeg er ikke sikker på, hvad navnet på den.
Bare google det, og du er kommer til at finde den.
OK, flere spørgsmål?
Awesome, tak fordi du kom.