GABRIEL Гимараеш: Ова е CS50. Добредојдовте на Неверојатни Веб апликации со Ruby on Rails. Значи за секој кој е заинтересиран за веб развој и правење веб-сајтови, веб апликации, Ruby on Rails е ова неверојатна алатка која Твитер, GitHub, Groupon, и сите видови на навистина убаво, и големи, веб апликации се користат во последните неколку години. И тоа е навистина, навистина кул функција, кул алатка, бидејќи тоа е ново. Па тоа ги има сите на нови моќни технологии вградени во една рамка која ви помага да се справи со сите видови на неверојатни работи. Но она што е рамка? Па рамка во основа е нешто што создава - кога ќе почнете веб-сајт, ако сте почнале од нула, како ќе ја отворите gedit таму, и ако сакате да го кодот сите на вашиот HTML, и кодот на сите ваши PHP, сите ваши CSS, сè од нула - тоа е само ќе биде многу работа. И рамка буквално ви дава половина од веб-сајт се направи веќе. Така да започнете со половина сајт кој има сè таму за вас. Како база на податоци конекции, и сите видови на работи кои треба да се грижите за ако сте го прави тоа од нула, вие не мора да се грижите за оние ниско ниво детали. Но, денес ние ќе се извезува една од веб-сајтови кои Новак на класа на 2017 најверојатно се запознаени. Па овој веб-сајт е веб-сајт кој јас го направи за нашата класа во текот на летото. Тоа беше еден веб-сајт, каде што студентите на класата на 2017 би можел да се најавите и да комуницираат едни со други. И тогаш ова е сајтот - сите, каде што луѓето се. И имавме книгата игра, песни игра каде што видовме луѓето песни и книги на луѓето. Она што тие сакаат да читаат, што тие сакаат да слушаат. И најинтересниот дел од тоа е дека тоа буквално ми требаше три часа да кодот сето тоа. Бидејќи ако морам да стори сé што е од нула, како отворањето gedit, тоа веројатно би ги презеле мене 20, 30 часа. Но со Ruby on Rails, бидејќи сè беше веќе се воспоставени за мене, Тоа само ме зеде три или четири часа, или нешто слично. Значи она што е Ruby on Rails. Ruby on Rails, пак, како што веќе рече, е рамка. Ова е слика на рамка. Па ви се случува да се започне изградба на куќа, имате половина од куќа направено. Тоа е рамка. И Ruby on Rails е токму како што. И треба да мислат на тоа како, ќе почнете да веб-сајт, ќе почнете да вашиот веб- апликација, веќе имаме половина од тоа направено таму. Но, прво на сите, што е Руби? Ruby on Rails користи модел поглед контролер, кој е парадигма, која е навистина интересно - и сите апликации денес користете нешто слично. Оваа идеја на одвојување работи во три дела, модел, поглед, и контролорот. Ние ќе зборуваме малку повеќе за тоа подоцна. Прво, она што е PHP? Значи ова е Руби. И ова е симбол на јазик наречен Руби. Руби е еден од речиси нов толкува јазици, така скрипта. Тоа е јазик што не е компајлирана како C. Тоа е компајлирана во бегство. Па тоа е добро, бидејќи, исто како PHP, на пример, исто така, се толкува, е не состави. Тоа е добро бидејќи нејзините пренослив. Така да само помине вашиот кодот од една машина на друга. Од машина Linux, на Windows машина, на Mac или Apple машина, или нешто слично. И не треба да се грижите за детали во врска со секоја од специфичните оперативни системи. Тоа се случува да работат насекаде. И Руби е јазик кој - вие момци веројатно се сеќава на ова. Луѓе го користат хаш функција имплементирана во C за хеш табелата минатата недела и ги имаше сите видови на сегментација грешки. А потоа работите да се грижиш дали стрингот јас таму, низа з тука, всушност беше мали букви или големи букви, или овие вид на загрижувачки ниско ниво детали. И во Руби, ако сакате да се имплементираат хеш табелата, тоа е токму вас како создаде хаш табелата. Ви велам, речник, тоа е името на мојот променлива, = "Hash.new". А потоа речник ["foo"], и кога сум додавање на foo во мојот хаш табелата, јас сум само велејќи foo е таму. А потоа, ако сакав да проверам дали foo беше таму, јас само се каже дали речник ["foo"] == true враќање вистина. Леле, и тоа е вашата хаш табелата. Тоа е спроведувањето на хаш табелата во Руби. Па секој посака тие би можеле да имаат се користи нешто како Ruby за последните pset недела, нели? Имаме сите видови на причини да сакате да се користи јазикот како Руби. Рубин има камења. Скапоцен камен е име за еден вид на библиотеката во Ruby. Така сите видови на интересни карактеристики кои можете да ги имаат, на пример, ако јас сакаат да се интегрираат моето барање. Дека Харвард 2017 апликацијата е интегрирана на Facebook. Па може да се најавите, преку Фејсбук, на стан. Значи, ако си оди за да се направи тоа, вие не треба да се грижите за испраќање на некои HTTP барање на Facebook, и чекање за одговор, и форсирање на одговор, и бла, бла, бла. Вие само преземете скапоцен камен кој прави сето тоа за вас. И тогаш не треба да се се грижи за сето тоа. А потоа многу помош на интернет, се разбира. Има многу, многу, многу веб-сајтови кои се случува да ви помогне и со Руби и со шини. И тоа е многу забавно да се код. Точно, бидејќи можете да престанете да се грижи за оние кои не се толку забавно проблеми. Како ако нешто не е во мали или големи букви, и тогаш, зошто е ова кои ви даваат сегментација грешка, а навистина може да се нурне во многу интересни нешта. Да се ​​нурне во навистина кул проблеми. Па Руби е исто како на C во некоја смисла. Па тоа нема да биде толку голем за скок всушност. Така става, тоа е нашата печати стан во Ruby. Мислам дека можете да го користите печати премногу, но става е она што секој го користи. Па само го става "Здраво свету". Можете да, или не би можел да имаат заградата заокружување "Здраво свету" таму. Вие само може да избере дали или да не се користи тоа. А потоа x = "1". А додека јамка изгледа прилично ист. Тоа само има помалку синтакса. Тоа е вид на почиста малку. А потоа ако x> 25 става "Биг!" и друго става "Мал ...". И тоа е вид на C во таа смисла. Значи, ако се погледне на тоа, можете да пристап веројатно се разбере сето она што се случува. Но тоа е помоќен. Повеќе моќни, бидејќи повеќе од тоа, Што може да направи работите не се толку - некој вид на hackage малку. Во C вие не можеше да стори во само го прават со една линија. На пример, го става "Јас сум # {x}". Ова е само синтакса за стави на вредноста на Х тука, и не се печати карактер х. Во C ти мораше да го стори проценти d, и тогаш постави променливата x по запирка тука, или нешто слично. И во Ruby има стенографија за само тоа го прават. И го става ова, ако x> 3, па можете да стави ако сите на една линија. А потоа на листата. Листи во C, како низа, треба да се ги пратите на колку е голема вашиот низа е или инаку ќе добие сегментација вина. Вашиот низа е само еден вид. Па тоа е или низа на полнење или низа од цели броеви. Во овој случај, јас создаде листа овде, тоа е низа, која има прв елемент е низа, Јован, а потоа четири, две - тоа се цели броеви. А потоа јас само додадете, листа, Лев агол конзола, лево Агол конзола, три. Тоа значи дека само додаваат нешто на мојата листа. Па тоа е вид на повеќе интересни, бидејќи ако си сакал да го користи ова како само едноставна листа на цели броеви, може, целосно. Тоа е сосема во ред. Само стави броеви таму. Но, ако си сакал да направи нешто што е повеќе привлечни, дека има и други работи, дека има - Не знам, сите видови на листи во таму, или други објекти кои се повеќе Интересно, можете целосно да го направите тоа. Тоа е сосема во ред. А потоа, ако сакате да iterate преку на листата, можете да го користите повеќе Ц-носталгичната вид на пристап. Тоа е за телефонска линија, можете да се иницира променлива, i = "1", или i = "0". А потоа да одите, и iterate, и да добијат сите елементи. Но вие исто така може да се користи оваа повеќе Руби-како пристап. Тоа е исто како list.each. Тоа е само велејќи, врати ме сите елементи на листата. И се прави со секој елемент, ги нарекуваат ЕЛЕМ. Значи ова е само име што сум давање на секој елемент. А сега тоа се случува да се повторува за сите елементите, и ЕЛЕМ, тоа се случува да биде начинот на кој ние пристап дека еден елемент. Така што целосно би можеле да се држиме до С пристап, но ова работи премногу. И тоа е иста работа, во ред. И освен тоа, тоа е навистина, навистина лесно да се интегрираат Руби и HTML бидејќи вие момци се заинтересирани во веб апликации. HTML е дефинитивно нешто што сте ќе треба да се користи многу. И тука, ако си сакал да се стави Руби во HTML, само на проектот тука, <%. Тоа значи, тука Руби почнува. А потоа%>, нешто како PHP во таа смисла. Тука Руби завршува, а потоа можете да само ги ставаш ако тука. А потоа имам некои променлива user.logged_in. Во Руби, ние обично додадете оние, или испрашување марка или фантастичен марка, како банка карактер, само да се вид на се прави разлика помеѓу нашите функции. Но вие едноставно се стави дека поради самите себе. Тоа не е нешто што се менува ништо во функционалноста. Па само да ве потсетам дека ова е функција - и функции во Руби, наместо Ц, како што веќе реков, тие не треба голема заграда. Така што логирани во нешто, тоа е функција, тоа е метод. Но вие не се експлицитно треба да стави загради во таму. Па само прашуваат дали на корисникот ќе се најавите, и ако корисникот се најавите, сега HTML повторно почнува. Па добредојде, и тука Јас печати user.name. И тоа е тоа. Па тоа е прилично директно напред, како ќе се интегрираат Руби со HTML. И ресурси, како што реков, постојат сите видови на средства за Руби. Сите вие ​​момци можат да се погледне на овој горе потоа бидејќи и двете видео и слајдовите, се случува да се бидат достапни онлајн. А сега ајде да се влезе Rails. Шини е љубов. Rails - па Руби е неговиот јазик. Добро, само како PHP, исто како Пајтон. Тоа е на високо ниво јазик, а не како В Средината, ниско ниво на јазик C во смисла дека Руби ќе не мора да се се грижите за меморија прераспределба, и покажувачи, и оние видови на нештата. Но Rails е оваа програма дека била напишана во Ruby. И го користи Ruby, со цел да ја имаат оваа рамка, за да бидат во можност да изгради страшни веб апликации. Па ќе мора прво да го инсталирате Ruby on вашиот компјутер, но повеќето машини веќе го имаат тоа. И потоа инсталирајте шини на врвот на неа. Ние ќе зборуваме за тоа подоцна. И зошто Rails? Па MVC, тоа е модел погледнете контролорот ние разговаравме за малку малку, прави сè што поедноставно, бидејќи го дели работите кои се концептуално различни во различни делови на вашата апликација. Помалку време трошат на ниско ниво на проблеми, повторно, и многу, многу популарни во моментов. Значи за сите оние кои се заинтересирани во стартувате сцена, или во нешто како почетна бизниси, а луѓето во технологијата на пазарот кои се започнат сопствен бизнис сега се навистина, навистина фанови на Ruby on Шини, бидејќи тоа е толку брзо. Така можете да добиете нешто и работи за помалку од еден ден, и тоа е навистина многу привлечни аргумент да го користите Руби. И шини 4,0 - тоа е многу свежо од печка сега. Па шините 4,0 - Мислам дека првата порака Во март оваа година. И тоа е навистина убаво, таа ги има сите видови на нови, супер можности. Па Ruby on Rails е рамка која е постојано се ажурираат да ги имаат сите на новата технологија. Прв пат се обидов да го користите Ruby on Шини, имав овој проблем, бидејќи јас создаде мојот прв веб апликација, и изгледаше токму како што. Па тоа создава сите оние датотеки за вас, и немав идеја што - што е ова? Тоа создаде сите оние датотеки, а јас само сакаше да се создаде едноставен програма, едноставна HTML веб-сајт. И јас дури и не можеше да стори ништо. Па бев малку совладан. Но тоа е една од работите што некогаш сте сфатам тоа, сè станува толку многу појасна. Па не биде поразен од страна на првите поглед на она што ќе се создаде во прв план. Значи она што се случува е Rails создава сите оние датотеки. Па еден од кој е doc, документација. Db, која е поврзана со базата на податоци. Lib, тоа е библиотеките се најавите. Јавноста, скрипта, и некои работи. Доста на сите што се случува да се грижите за е стан папка, таму горе. Тоа е папката што ги содржи вашата апликација. Сите други фајлови - некои од нив се важни, и вие ќе бидете ќе научат за тоа подоцна. Но тие се само тука за да содржат рамка. Така, првиот камен-темелниците на куќата вие момци се градење, во ред? Но стан папка - тоа е навистина важно. И стан папка има средства. Средства е доста сè дека доаѓа. Слики за пример, она што е статички што се случува за да биде сменет на вашиот вебсајт. Па слики, JavaScript, CSS - оние видови на нештата се средства. Контролори - ние ќе разговараме повеќе за она што се контролори, модели, и полиња во секунда. И помагачи се функции кои можете можете да го користите сите над вашиот код да ви помогне да се направи нешто. Функции како се најавите, за пример - user.loggedin. Тоа е функција која веројатно ќе мора да се користат во сите делови на вашиот апликација. Така можете да ставите нешто како дека во вашиот помошник. Mailers - тоа е ако си оди за да се испрати е-маил на вашите корисници, можете сакате да го користите мејлер. И модели и ставови, ние ќе да се зборува за тоа сега. Па модел погледнете контролорот, тоа е основните камен-темелник на Ruby on Шини, а повеќето рамки во денешно време, да бидам искрен. Значи, повторно, се одвојуваме сите наши код во три различни делови. Моделот - овој модел е во основа на базата на податоци. Тоа се справува со работите во базата на податоци. Така што секоја маса во базата на податоци има соодветните датотека во моделот. Па тоа е вид на табела за вашите корисници. Па ти си складирање на информации, како на корисничко име, нивните пораки, нивниот адреса, лозинка, и работи како што. Ви се случува да имаат една датотека во моделот наречен корисник RB - RB за Руби. И таму ви се случува да имаат сите на методи и променливи. Променливи се случува да одговараат до корисничко име, е-мејл, и сè. И ви се случува да имаат методи. Дека ќе биде нешто во врска со - сте ќе треба да се справи со овој информации во базата на податоци. Да се ​​создаде модел со шини, само користење Rails произведуваат. И да се создаде работи во Rails, можете всушност треба терминалот. Па тоа е многу терминал базирани рамка. Вие само влезете во терминал, и не шини, генерираат модел. И името на моделот е корисникот. И јас само сакаат да имаат две променливи, две колони, во мојата маса. Па тоа е-мејл. Е-пошта е тип стринг. Лозинка, лозинка е исто така еден вид на стрингот. Тоа се само две работи. Тоа е вид на симплистички кориснички маса. Но вие целосно може да се стави сто нешто е таму ако си сакал да. И шини, исто така, го прави многу, многу едноставно да ги имаат сите видови на база на податоци односи. Па обично, кога ќе имаат маси во вашиот база на податоци, тие не се многу независно еден од друг. Ајде да се размислува за. Сакате да ја купите и продаваат производи онлајн. Добро, па имате веб-сајт, каде што сакате да се купува и продава производи. Па секој корисник има многу производи кои Овој корисник не е подготвен да го продаде. И секој корисник исто така има многу трансакции кои се во тек, или нешто слично. И трансакции се со друг корисник. Секоја трансакција припаѓа две различни корисници. Корисникот кој е купување и корисникот дека е продажба. Значи тоа се т.н. база на податоци односи. И тука имаме точно овие зборови, има многу и припаѓа. Тоа се најважните. А ти си само ќе кажам, за На пример, ова е пример на модел во Харвард 2017 веб-страница. Повторно, студентите тука - секој ученик на веб страната, студент е модел, е база на податоци табела. Секој студент имаше многу книги затоа што Може да се каже, она што се вашите омилени книги, нели. Па секоја книга им припаѓа на студент овде долу. И атрибутот достапен - тоа е само велејќи, оние се променливи. Тоа се променливи достапни од овој модел. И променливи сте автор на книгата, опис, жанр, и насловот на книгата. Па само информации во врска со книгата. И тука имам метод кој едноставно ги сортира сè. Значи се дефинираат и завршува тука, тоа е само велејќи, тука доаѓа мојот метод. Self.sorted_all. Тоа е само, дај ми се што сортирани, и тоа како ќе се спроведе сортирање алгоритам, што е прилично лесно. Но, во основа, ова е како модел изгледа, во ред. Дали некој има прашања во врска со оваа база на податоци работа? Односи? Јасно? Да. ПУБЛИКАТА: Можете ли да го прават алгоритам кој вид? GABRIEL Гимараеш: На вид на алгоритам, ОК. Кога ќе се навикнеш на Руби синтаксата, тоа се случува да биде јасно. Но во основа, elems е Book.all. Па книгата е името на мојата модел. Кога ќе се создаде модел, тоа доаѓа со сите видови на убаво методи за вас. Па dot.all е метод кој враќа сите книги. Но се најде, на пример, ќе се бара за една книга и да се врати таа книга, или нешто слично. И така elems е сè. И јас сум само велејќи elems.sort. Вид е вграден во Ruby функција. И, дали АБ. Значи ова го повторно е - ви се случува да го решите. Но ви се случува да се добие овој аргумент за мене. И аргументот користи - ова е еден од потешко нешта во Ruby всушност, ова не работа. Но штом ќе го разбере сè доаѓа многу, многу интуитивен. Па AB, ова е велејќи дека местото носителите дека ќе одам да се користи - како променливи Одам да го користите, се ќе треба да се нарекува и b. А тоа се книги. Па затоа вид треба да се споредат елементи, запомнете дека? Па кога ќе го решите работи, споредуваат два елементи. Одам да се каже дека во секое време сте ќе треба да се споредуваат - па ова е, јас сум поминува да го решите аргумент. И аргументот е сè од do да и тука, во ред? И овој аргумент, е само кажувам вид како да се споредуваат. Вид ќе работи тука, но тоа ќе се споредат со нивните стандардно споредба алгоритам. Сакам да го споредам во многу специфични начин, имено, кога книгата беше замислен, кога секоја Книгата беше создадена. Значи сакам да кажам дека, велат дека името на првиот книга е и името на втората книга како б, сакам вид за сортирање нешто врз основа на b.created_at овој чудни симбол, a.created_at. И дека чудно симбол е стенографија за ако некој е поголем од други, се врати 1. Ако е еднаква на други, се врати на нула. Ако е помал од други, се врати минус 1. Значи тоа е она што чудно симбол е. Но, тоа не е важно. Мислам, она што сакам вие момци да се добие сега е идејата дека базата на податоци - ќе може да има модел таму. Значи, вие не мора да се грижите за поврзување и користење на SQL изјава, и работи како што. Таа, исто така може да се создаде вратите за SQL инјекција и сите видови на безбедносни проблеми. Во овој случај, вие не се грижи за тоа. Само користење методи како book.all. И дека, во позадина се разбира, се случува да вашата база на податоци, и тоа е случува да се користи SQL изјава да ги добиете сите книги. Но, вие не мора да се се грижи за тоа. Тоа е готова брза, во ред? И кога ќе имаат belongs_to изјава вака, тоа значи дека еднаш имаш книга објект, може да се види она што е неговата студент. Така што студентот има оваа книга? Па ние само може да се користи book.student, и кој ви дава она што ученикот е. И тоа е навистина функција да го имаат. Добро, сега погледот. Значи овој модел е што се поврзува со базата на податоци, нели? Глетката е во основа HTML, и CSS, а некои го вклучите Javascript-. И тоа е она што на корисникот го гледа. Корисникот нема да види вашата база на податоци. Тој се случува да видите некои податоци од база на податоци вградени во себе и гледачот. Ruby on Rails тоа го прави навистина едноставно да се направи полиња. Прво, затоа што тоа веќе го создава за вас, надвор од кутијата, распоред. А распоред е во основа нешто што - ако сите на вашите страници имаат логото на врвот а, јас не знам, некои мени или нешто слично, дека сите ваши страници удел во заеднички, тогаш не треба да се создаде многу, многу, многу HTML додадени фајлови: каде сите датотеки имаат тоа истата HTML код. Мислам дека е глупава затоа што ти си само повторување кодот меѓу различни датотеки. Тоа е дефинитивно не е добар пристап. Па Ruby on Rails создава овој распоред за вас. И ова е само велејќи, сите мои страници се случува да имаат овој HTML, овој наслов наслов овде, а тоа се стил лист врската таг. Приклучиш тука сите мојот CSS. Приклучиш тука сите мојот вклучите Javascript- и некои мета тагови. Тоа е само нешто што тие направи автоматски за вас. А потоа, на крајот на главата, сега тука започнува телото. И сега ова е мојот вистински содржина. Значи, ако сакав да се стави нешто како, мени тука, јас би рекол право врз ова место, или нешто слично, така што сите од моите страници дели. Па распоред се дели од сите страни. Сега дека родот тука само вели, без оглед на тоа што страници ова е во, само приклучиш во содржината на таа страница овде, во ред? А сега ова е, на пример, содржината на една страница, која ќе биде вклучени во овој принос изјава автоматски со шини. Но, ова е распоред дели од сите страни. И ова е пример на една страница. И тоа е токму оваа страница кој ги прикажува сите книги. Значи ова е основен HTML табела до врвот. Па котација книги, наслов, автор, опис, жанр. И овде се користи, повторно, некои Руби синтаксата, @ books.each-- @ Вид на вели дека вашата променлива е глобален во некоја смисла. Бидејќи оваа променлива е всушност прогласена во контролер кој си оди за да се види токму сега. Но, само земе здраво за готово дека овој @ Книги е променлива која е листа на сите книги. Па books.each, не, и повторно, ова е само велејќи како сакаш да го именува секоја од повторувачи, така што ние не мора да се грижите за четири, int i бла, бла, бла. Ние само се земе секој од елементи и да ги искористиме. Значи ова е книга, а потоа само печати тука. book.title, book.author, book.description, и бла, бла, бла. И тука е link_to. Па link_to е само линк таг што корисникот може да кликнете на и оди на друг веб-сајт. Link_to, покажуваат дека одредена книга. Значи, ако корисникот не е многу заинтересирана за оваа книга, тогаш тој може да кликнете на шоуто. Или кликнете на уреди, ако тој сака за уредување на книга. Или да уништиме, ако тој сака да ја избришете книга од базата на податоци. Добро, дали тоа има смисла? Добро. Конечно, контролорот. Значи, во основа контролорот е интерфејс меѓу модел и гледање. Па модел е дел од вашиот код кој има база на податоци - секоја маса во базата на податоци има соодветната датотека во модел, и така натаму. И како модел и погледот комуницирате? Значи, преку контролер. Што контролер не е тоа е модел за нешто како, на пример, стави сите на книгата во внатрешноста на променлива. Како овој, @ книги. И тоа треба да бидат глобални со овој на работа, бидејќи тоа нема да биде посетена од страна на гледање. Тоа не се случува да се користи во рамките на самиот контролор. И тоа само го забавува информации кои поглед се случува да го користите. На пример, контролорот проверки ако корисникот не е онлајн. И како тоа го правите тоа? Тоа всушност го прашува модел бидејќи модел има информации за корисникот. Таа има корисници маса, книгите маса, други маси. Па контролорот прашува дали корисникот е онлајн. Ако корисникот не е онлајн, контролорот се справува со работите како ставање на колаче, или нешто слично, да се стави печат да се каже дека корисникот е онлајн. Нема потреба да се најавите повторно. И тоа се случува да се вчита променлива наречена корисникот, на пример, дека поглед да го користите. И погледот може да се стави нешто тука, на пример, добредојде user.name. Па затоа се случува да се каже, добредојде John, Добредојдовте Џејмс - нешто како тоа, нели? Па сите овие променливи се користи во поглед се случува да биде вчитан во контролер и се случува да бидат зафрла од моделот. Ова е пример на контролорот. Значи имаме, во основа, секој - ние го нарекуваме оние нешта акции. Така индекс е акција. Тоа е Руби функција. Тоа е метод Руби во таму. Но, за контролорот повици тие работи дејствија. И секоја акција е поврзана со пат. Па еве овој пат, на пример, е се соопштението / книги. Значи, ако одите на harvard2017.com/books, што ќе се случи е овој код е ќе треба да се нарекува. И таму е датотека - дозволете ми да ја отворите оваа вистински брз. Има фајл наречен суровини датотека. Тоа не е отворање. Па постои датотека со име суровини датотека , која во основа се совпаѓа - ох, сега тоа е отворање. Тука, правци. Значи, во основа се поклопува со вирус, активирање / нови на пример, да нешто во контролорот. Така што овој контролер наречен активирање контролер, но овде, имаме книги, на пример. Значи натпревари - Книги / нови, за да контролорот книги, акцијата ново. Значи, во основа, многу лесно работи. И тука, ако сте имале да се добие / книги, сека проект на книги, коса црта нови, ви се случува да одат на таа Руби метод таму долу. Значи тука, она што овој индекс прави е само вчитување книга логирате. Тоа е нешто што - Јас се најавите на сите книги во дневник. И сите го средиме. Значи ова се случува да се вратат сите подредени книги. Ова е, пак, во базата на податоци. Значи ова е метод на моделот. Видовте овој метод се создадени во модел. Сега ова е само вчитување на сите книги и ставање во променлива дека може да се види од страна на гледање. Затоа што не може, во средината на HTML кодот, не можете да се јавите нешто директно од моделот, бидејќи за две причини. Прво, поради безбедносни причини, бидејќи тоа не е навистина интересно да се биде вчитување на податоци директно во секој HTML дека е во базата на податоци. И второ, да ги задржи вашите код навистина организирани. Па одвои точно различни делови. Па BookLog.sorted_all, тоа во база на податоци и тоа се случува да се стави во променлива @ книги. А сега оваа променлива е достапна во рамките на вашиот HTML код. Така што само може да се стави на сите книги таму исто како што го правевме, токму овде. Ова е променлива. И посети respond_to направи | формат |, ова е само еден вид на Руби синтакса за ако корисникот не е ме прашува за HTML кодот, јас ќе одам да одговори со HTML код. Ако корисникот ме прашува со JSON код, што е нешто што веб апликации користат да комуницираат меѓу себе, тие обично користат JSON или некои други вид на работа. Па тоа само одговара користење на овие две различни формати. Но за нормален корисник, оваа не би требало да биде овде. Вие само ќе одговори со HTML, и тоа е добро. Па навистина не се грижат дека многу за тоа. Ова е само линија код во нашата контрола како што е вчитување од HTML база на податоци, пуштање во нешто што е достапна за гледање. А потоа нови, па еве Јас сум создавање на книги. Туку да се создаде книги, ми треба еден студент затоа што треба да знаете студент чии книги оваа припаѓаат, во право. Значи @ студент = Студент. Студент, повторно, ние сме почнувајќи со голем S е модел ученик. Добро, така што ова е модел ученик, ова е модел книга логирате. Student.find, па ќе одам да се најде ученикот со користење на параметри проект. params.id, ова е едноставно ме добие вредноста на овој проект, кој беше усвоен - и URL-то. Само ќе пребарување за што студентот. И на прво место, ние ќе треба да се провери ако студентот има некои песни и бла, бла, бла. И ова веќе се справува со случај кога студентот не постои, на пример. И тогаш, друго, ние едноставно одговори на истото користејќи HTML. А потоа можеме да ги споделите на корисникот создавање на нивните песни. Значи ова е нова. Нова обично се користи за, ајде корисникот да се создаде нешто. И потоа, тука е да се создаде акција тоа е обично се користи за - всушност, се стави на песни во базата на податоци или нешто слично. Но, штом еднаш ќе почнете со користење шини, тие работи се случува да бидат многу, многу повеќе јасно. Добро, се излади. Било какви прашања досега? Дали тоа има смисла со контролори, модели, области - Да? Повторно во вашиот Rails апликација - па сето тоа може да се најде тука. Па имате стан, контролери, оние сите од моите контролери. Така на пример, книги контролира. Тоа е онаа што само што видов. А потоа пати. И секој контролор има поврзани поглед, нели? Па автоматски кога ќе се јавите овој индекс тука, на пример, или кога ќе се ова го нарекуваат книги нов, тогаш погледот, книги, нови ќе бидат повикани. Па Rails прави се автоматски за вас. Така што секој контролер има поврзани видите и сите модели - тука I имаат еден, два, три, четири, пет модели. Но, ова е студент модел, така што оние се променливи кои сите студентите имаат - локализација, дата на раѓање. Студентите е малку повеќе комплицирана, бидејќи секој студент има повеќе различен метод поврзани со тоа. Но, ова е само справување со табела која ги имаше сите учениците во базата на податоци. И, во ред, инсталирање Rails. Инсталирање шини, да бидам искрен, не е наједноставниот нешто. Но штом ќе добие минато сè, тоа е многу, многу лесно. Така што инсталирањето шини, вие само одете на веб-сајт, rubyandrails.org / download и да ги следат нивните инструкции таму. Преземете сè. И можете да го направите тоа или во апаратот, во CS50 апарати, за Прозорци, на Mac, или било кој оперативен систем на вашиот избор. Ruby on Rails работи на сè. Шансите се веќе сте Руби инсталиран ако имате Mac или - во апарати Мислам дека Руби е - Не сум сигурен. И можеш само ја имаат оваа инсталиран. И ако сакате да креирате нов веб апликација, можете само направи шини, нов, блог. Шини, нови - Не знам - името на вашиот веб-сајт. И тоа е толку едноставно. Тоа се случува да се создаде сите оние додадени фајлови: Јас само ти го покажав. Но моделот, погледот, и контролорот не се случува да бидат уште населен. Сте само ќе мора да одат таму и се доверат оние три папки. Па шансите се, вие сакате да се создаде модел, на пример, спроведување на една модел во прв план. Значи, повторно, секогаш се обидува да гризне помали битови на проблем во исто време. А потоа да речеме, се создаде модел за вашите корисници. Тоа е првото нешто ако имате корисниците. Тогаш сакам да се создаде модел исто како што покажа тука. Шини, генерира, модел, корисникот, а потоа пораки низа - имаме тоа овде. И само се создаде тој модел, да. Шини генерираат модел пристап внесувачот: стринг Лозинка: стринг. И тогаш ќе се создаде контролер која се занимава со корисникот. И можете да креирате нови корисници и не оние видови на нештата. А потоа можете да се движи кон создавање на остатокот од вашиот вебсајт. Кул, прашања? Да. ПУБЛИКАТА: [нечујни] GABRIEL Гимараеш: Да, да, дефинитивно мора да одат во погледот. Тоа е многу добро прашање. Па поглед е она што, всушност, содржи HTML. Значи тоа е она што на корисниците се случува да се види. Повторно, тука, ова е пример на гледање. Таа има HTML кодот и Руби код во исто време. Па Руби код е таму да се стави работите од базата на податоци, на пример, кои беа натоварени на контролорот. Така што променлива @ книги, на пример, ги има сите на книги и маса книги во базата на податоци. Ние се сигурни дека тоа беше во контролорот. И погледот - секоја од страниците од вашиот веб-сајт е ќе имаат еден поврзани поглед. Значи, ако одите на почетната страница, многу првата страница, harvard2017.com. Што покажува една страница. И потоа да одите за намалување профил. Што се случува да одат на контролорот тоа е профилот на контролорот. И профилот контролер се случува за да ви даде профилот на гледање. И профилот поглед се случува да се погледне нешто како ова, но тоа се случува да имаат информации за корисникот, а не за книги. Така, тоа е и HTML кодот и CSS и оние нешта што корисникот го гледа со Руби код - кои, всушност, отпечатоци работи од базата на податоци. Е дека повеќе јасно? Се надевам. Публика: HTML кодот се користи за да всушност се направи веб страната дека корисникот го гледа, но Руби код е она што ја прави веб страната работа? GABRIEL Гимараеш: На Руби код добива претворена во HTML. Па што корисникот добива е само HTML, во ред? Тоа е само HTML. Ова book.title се случува да се претворат во вредноста на book.title во HTML, ОК. Значи ова е за сите на серверот, и така ова зависи од тоа што книги се таму во серверот, токму сега. Но, она што на серверот ќе веднаш смисла е само HTML кодот, ОК. Но, погледот само дава на изгледот на она што го HTML требаше да изгледа како и она што променливи се случува да биде. Овој вид на печатење, ОК. Тие работи постојат во основа се печати испис. Тие се случува да се печати променливи, ОК. Значи она што е само HTML, оние - автор, наслов, опис. Тоа е статична содржина. Тоа не се случува да се промени. Тоа е само обичен HTML код. Тоа се печати испис За променливите - работи кои зависат. Кул, повеќе прашања? Добар? Да. ПУБЛИКАТА: Мислам дека ги вршеа сите уредување во различни текст програма за уредување. Треба ние, исто така преземете тоа? GABRIEL Гимараеш: Да, ми се допаѓа ова уредувач на текст наречена Textmate. И тоа е навистина добро. Тоа е добро прилагодени за Руби. Тоа бои работи многу уредно. Така Textmate, T-E-X-T. Одам да се стави дека, се држи - Мислам можете да го користите gedit или нешто што сакате. Но, ова е специфична за Mac, и ова е навистина уредни, бидејќи тоа ги става сите на Вашите датотеки, таму долу. И во Ruby on Rails, треба за да се префрлите датотеки многу. Па тоа е многу, многу датотеки само одат од една датотека, скокне до една датотека или на друг. Па Textmate е многу добра, но постојат многу таму. Повеќе прашања? Добро, да? Публика: Дали постои мобилната развој преку Ruby on Rails? GABRIEL Гимараеш: Јас сум слушнале на нештата. Јас не ги користат. Вие би можеле да истражување повеќе за тоа. Не сум сигурен дали има било добра работа таму. Добро, да? ПУБЛИКАТА: [нечујни] GABRIEL Гимараеш: Не шини, веројатно Руби низа. Отвори терминал прозорец и видот, "Руби". Да, веројатно, а потоа ќе само треба да го инсталирате Rails. Но ако си оди за да ја инсталирате новата Шини 4.0, кој Силно препорачувам, треба да ја преземете Руби 2.0. Тоа е нов премногу. И новиот Rails 4.0 има нешто навистина кул што тоа го прави на средства. Тоа се справува со средства. Средства повторно се слики, CSS фајлови, и JavaScript датотеки. Така што едно навистина уредни нешто што Ruby on Шини се за вас е сите оние CSS додадени фајлови: дека имате и сешто - тоа само снопови се нагоре во една огромна датотека, без празни места или ништо, да се минимизира времето корисникот треба да преземете дека кодот од вашиот сервер. Па кога ќе ги видите во вашиот компјутер, тоа е ќе мора како 15 CSS фајлови. Или многу, многу различни CSS фајлови. Но на крајот на денот, што шините автоматски прави тоа за вас е тоа става сето заедно во една огромна датотека така што го минимизира барање време. Тоа е навистина кул. Да? ПУБЛИКАТА: [нечујни] GABRIEL Гимараеш: Токму така. Значи, Google Maps интеграција. Тоа е да го вклучите Javascript API од Google. Па јас само отиде во веб-сајт на Google. Тие ја имаат оваа на Google Maps API и јас преземале кодот и вклопувајќи ја во мојот поглед. Значи она што ми требаше да се направи таму е што е потребно за да се добие локации од базата на податоци. Што е направено во контролорот. Па отидов на контролорот - каде е контролер. Контролорот изгледаше вака. Доби сите локации на студенти, стави сето тоа во голем променлива, голема листа, што ги има сите локации. И во поглед, бидејќи го вклучите Javascript- API е нешто во видите, нели? Бидејќи го вклучите Javascript тече во рамките на вашиот HTML код, тоа се случува да се испрати до машина на корисникот. И во поглед, јас сето тоа натоварени информации во API на Google. И тоа го правеше сето тоа за , што ме е навистина кул. Но, ако сакате да го користите работи во back-end, а тоа е како библиотека, за пример, повторно - интеграција со Фејсбук. Тоа е нешто што многу, многу, многу апликации се користи во денешно време. Па имате интеграција со Фејсбук затоа што тоа е многу полесно да се само логирате со Фејсбук отколку да се креира сметка и бла, бла, бла. Тогаш само се користи како скапоцен камен и тоа како едноставно како одење на вашиот скапоцен камен датотека. Скапоцен камен датотека е датотека се нарекува дијамант датотека во изворниот директориум на вашиот Ruby on Шини проект. Само одиме таму и да додадете нови дијамант. И ќе го гледам нагоре во Google. Има многу, многу, многу скапоцени камења. Има една која конкретно не ова на Facebook интеграција. Не сум сигурен што е името на тоа. Само да го Google и сте ќе го најдете. Добро, повеќе прашања? Прекрасно, ви благодарам што дојдовте.