>> GABRIEL GUIMARAES: Це CS50.
Ласкаво просимо Дивовижні Web Apps з Рубіном на Rails.
Так що для тих, хто цікавиться веб- Розробка і виготовлення сайтів, веб-
додатки, Рубін на рейки це дивовижний інструмент, який Twitter, GitHub,
Groupon, і всякі дуже приємно, і великі, веб-додатки, використовуючи в
за останні кілька років.
І це дуже, дуже круто функція, крутий інструмент,
тому що це нове.
Так що є всі новий потужний технології включені в один
структура, яка допоможе вам впоратися з всякі дивовижні речі.
>> Але те, що є основою?
Так рамки в основному те, що створює -
при запуску веб-сайту, якщо ви почали з нуля, як ви відкриваєте
GEdit там, і ви хочете, щоб закодувати всі вашого HTML, і код всіх ваших
PHP, всі ваші CSS, все з нуля -
от тільки буде багато роботи.
І база буквально дає половина сайті зроблено вже.
Таким чином, ви починаєте з половиною сайті що є всі там для вас.
Як і з'єднань з базою даних, і всі види речей, які вам не доведеться турбуватися
о, якщо ви робите його з нуля, Ви не повинні хвилюватися про тих,
докладніше низькому рівні.
>> Але сьогодні ми збираємося експортувати один з веб-сайти, що першокурсник з
клас 2017, ймовірно, знайомі.
Так що це веб-сайт веб-сайт, що я зробив для нашого класу протягом літа.
Це був сайт, де студенти клас 2017 може увійти і
взаємодіють один з одним.
І то це карта -
все, де люди.
І у нас був книжковий гра, пісні гру де ми бачили пісні людей і
книги народні.
Те, що вони люблять читати, то, що вони люблять слухати.
І найцікавіше частина його , Що буквально взяв мене 3:00
кодувати все це.
Тому що, якщо я повинен був зробити все від подряпина, як відкриття Gedit, це
, Ймовірно, взяли мені 20, 30 годин.
Але з Рубіном на Rails, оскільки все було вже створена для мене,
він тільки взяв мене три чи чотири години, або щось в цьому роді.
>> Так що ж таке Рубін на рейки.
Рубін на рейки, знову, як ми вже сказав, є рамковим.
Це картина рамок.
Таким чином, ви будете втрачати будинок, у вас вже є половину
Будинок зроблено.
Це основа.
І Рубін на рейки є саме так.
І ви повинні думати про це як, ви починаєте сайт, ви починаєте свій веб
Додаток, у нас вже є половина його зроблено там.
Але в першу чергу, те, що Рубі?
Рубін на рейки використовує вигляду моделі контролер, який є парадигма, який
є дійсно цікаво -
і всі додатки в даний час використовувати щось на зразок цього.
Ця ідея поділу речі в три частини, модель, вид, і
контролер.
Ми збираємося поговорити трохи про це трохи пізніше.
>> По-перше, що таке Рубі?
Так що це Рубі.
І це є символом мова називається Рубі.
Рубін є одним з досить новий інтерпретованих мови, так скрипт.
Це мова, яка не компілюється як С. Це складений у бігах.
Так що добре, тому що, як PHP, наприклад також інтерпретується, є
не збираються.
Це добре, тому що його портативним.
Таким чином, ви просто передати свій код від однієї машини на іншу.
З машини Linux, до ОС Windows машина, до машини Mac або Apple, або
щось в цьому роді.
І вам не потрібно турбуватися про подробиці щодо кожного з конкретних
операційні системи.
Це буде працювати скрізь.
>> І Рубі є мовою, який -
ви, хлопці, можливо, пам'ятають її.
Люди використовують хеш-функції реалізовані в С для хеш-таблиці
минулого тижня і були всі види помилок сегментації.
І тоді все піклуючись про те, що рядок я там, рядок я
тут, насправді був нижній регістр або Прописна або такого роду занепокоєння
докладніше низькому рівні.
Ну в Ruby, якщо ви хочете реалізувати хеш-таблицю, це точно, як ви
створити хеш-таблицю.
Ви говорите, словник, це ім'я моєї змінної, = "Hash.new".
А потім словник ["Foo"], і, коли я додавши Foo до мого хеш-таблиці, я
просто кажу Foo є.
>> І потім, якщо я хотів перевірити, якщо Фу був там, я просто кажу, якщо
словник ["Foo"] == вірно повернення правда.
Вау, ось і ваш хеш-таблиці.
Це реалізація з хеш-таблиці в Ruby.
Так що всі шкода, що вони могли б мати використовується щось на зразок Рубі за останні
PSET тижня, чи не так?
У нас є всі види причин, щоб хочуть використовувати мову, як Ruby.
Рубін має дорогоцінні камені.
Джем це ім'я для свого роду бібліотеки в Ruby.
>> Так що всі види цікавих особливостей що ви можете мати, наприклад, якщо
хочете інтегрувати мою заяву.
Це Гарвардський 2017 додатків була інтегрована в Facebook.
Таким чином, можна увійти через Facebook, в додаток.
Так що якщо ви збираєтеся це зробити, ви не потрібно турбуватися про відправку деяких
HTTP запит на Facebook, і чекає для відповіді, і змусити
відповідь, і бла, бла, бла.
Ви просто завантажити дорогоцінний камінь, який робить все, що для вас.
І тоді вам не потрібно турбуватися про все це.
>> А потім багато допомоги онлайн, звичайно.
Є багато, багато, багато сайтів, які збираються, щоб допомогти вам як з
Рубі і з Rails.
І це дуже весело в коді.
Саме тому, що ви можете не турбуватися про тих не так весело проблем.
Як ніби щось в нижньому регістрі або у верхньому регістрі, а потім чому це
даючи вам помилку сегментації, і ви дійсно можете зануритися в дуже
цікавий матеріал.
Щоб зануритися в дійсно цікавих проблем.
>> Так Рубі так само, як в С в сенсі.
Так що це не буде, що велика стрибка насправді.
Так ставить, ось наш додаток друку в Ruby.
Я думаю, що ви могли б використовувати печатку теж але ставить те, що кожен використовує.
Так просто ставить "Hello World".
Ви могли б, або ви не могли, мають дужка оточення
"Hello World" там.
Ви можете просто вибрати, чи буде або не використовувати це.
І те х = "1".
У той час як цикл виглядає досить те ж саме.
Це просто їсти менше синтаксис.
Це свого роду чистіше небагато.
І потім, якщо х> 25 ставить "Великий!" і ще ставить "Маленький ...".
І це частково C в цьому сенсі.
>> Так що якщо ви подивитеся на це, ви можете підхід, мабуть, розуміють
все, що відбувається.
Але це більш потужним.
Більш потужний, тому що, більше того, Він може робити все не так -
якась Hackage небагато.
У C ви не змогли зробити в просто зробити з однією лінією.
Наприклад, ставить "Я # {х}".
Це тільки синтаксис помістити значення з х тут, і не друкує
характер х.
У C ви повинні були зробити відсотка д, і потім поставити змінну х після того, як
кома тут, або щось в цьому роді.
>> І в Рубіні є скорочення для просто роблю це.
І ставить це, якщо х> 3, так що ви можете покласти, якщо все в одному рядку.
А потім список.
Списки в C, як масив, ви повинні відслідковувати, наскільки велика ваша масив або
в іншому випадку ви отримаєте сегментацію звинуватити.
Ваш масив тільки один тип.
Так що це або масив заряду або масив чисел.
У цьому випадку, я створив список тут, ось масив, який має перший
елемент є рядком, Джон, а потім чотири, два - ті, цілі.
А потім я просто додати, список, Лівою кутової дужки, зліва
Кут Кронштейн, три.
Це означає, що просто додати щось в мій список.
>> Так що це свого роду більш цікаво, тому що якби ви хотіли, щоб використовувати це як
простий список цілих чисел, Ви могли, повністю.
Це абсолютно нормально.
Просто помістіть цілі там.
Але якщо ви хочете, щоб зробити те, що переконливішим, що є й інші
речі, які є -
Я не знаю,, всякі списки в там, або інші об'єкти, які є більш
Цікаво, ви можете повністю зробити це.
Це абсолютно нормально.
І потім, якщо ви хочете, щоб перебору список, ви можете використовувати
більш C-іш такий підхід.
Це цикл, ви ініціювати змінна, г = "1", або I = "0".
А потім ви йдете, і ітерації, і отримати всі елементи.
>> Але ви також можете використовувати її більш Рубі-як підхід.
Це так само, як list.each.
Ось тільки говорять, повернути мене всі елементи списку.
І зробити з кожним елементом, називати їх елем.
Так що це просто назва, що я даючи до кожного елементу.
І тепер це буде повторити для всіх елементи і елем, він збирається
бути так, що ми отримуємо доступ що один елемент.
Таким чином, можна повністю дотримуватися З підходом, але це теж працює.
І це рівно те ж саме, в порядку.
>> І крім цього, це дійсно, дійсно легко інтегрувати Рубі і HTML
так ви, хлопці зацікавлені у веб-додатках.
HTML, безумовно, те, що ви збираєтеся використовувати багато.
А от якщо ви хотіли, щоб покласти Рубін в HTML, просто почати тут, <%.
Це означає, що, от Рубін починається.
А потім%>, ніби як PHP в цьому сенсі.
Тут Рубін закінчується, а потім ви можете просто покласти ваш, якщо тут.
А потім у мене є деякі змінну user.logged_in.
У Ruby ми зазвичай додати тих, або знак питання або знак
марка, як і банківський характеру, просто виду
розрізняти наших функцій.
Але ви просто покласти, що для вашого ж блага.
Це не те, що зміни небудь у функціональності.
>> Так що просто, щоб нагадати мені, що це Функція - і функції в Ruby,
, А не C, як я вже сказав, вони не потребують дужки.
Так що відвідування речі, це функція, це метод.
Але ви явно не потрібно поставити дужки там.
Так просто питаю якщо користувальницький увійшли в систему, і якщо користувальницький увійшли в систему, тепер
HTML починається знову.
Так Ласкаво просимо, і тут Я надрукувати user.name.
І це все.
Так що це досить прямо вперед, як інтегрувати Рубі з HTML.
І ресурси, як я вже сказав, є всякі ресурсів для Рубі.
Ви, хлопці, все це може виглядати це до після тому що і відео, і
слайди, збираються бути доступні в Інтернеті.
>> А тепер давайте перейдемо до Rails.
Рейки є любов.
Рейки -
так Рубін його мову.
ОК, як PHP, так само, як Python.
Це мова високого рівня, а не як С. C в середній, низькорівневий мову в
відчуття, що Рубі ви не повинні турбуватися про перерозподіл пам'яті, і
покажчики, і ті види речей.
Але Rails це програма, яка була написана в Ruby.
І він використовує Рубі, для того, щоб це рамки, для вас, щоб бути в змозі
побудувати дивовижні веб-додатків.
>> Таким чином, ви повинні спочатку встановити Рубін на ваша машина, але більшість машин
вже є, що.
А потім встановити рейки поверх нього.
Ми збираємося поговорити про це пізніше.
І чому Rails?
Так MVC, це контролер вигляд моделі ми говорили про трохи
трохи, робить все простіше, тому що він ділить речі, які
концептуально відрізняється в різні частини вашої програми.
Чим менше часу витрачається на проблемах низького рівня, знову, і дуже, дуже
популярні зараз.
Так що для всіх тих, хто зацікавлений в запуск сцени, або в чомусь
як почати бізнес, і люди на ринку технологій, які є
почати свій власний бізнес прямо зараз дійсно, насправді шанувальники Рубі на
Рейки, тому що це так швидко.
>> Таким чином, ви можете отримати щось і працює менш ніж за день, і це
дійсно дуже переконливі Аргумент використовувати Ruby.
І Rails 4.0 -
це дуже прямо з печі зараз.
Так Rails 4.0 -
Я думаю, що перший випуск був у березні цього року.
І це дуже приємно, він має всі види нових, цікавих функцій.
Так Рубін на рейки є рамковим, що це постійно оновлюється, щоб все
нової технології.
>> У перший раз я намагався використовувати Рубін на Рейки, я повинен був цю неприємність, тому що я
створив свій перший веб-додаток, і це виглядало саме так.
Так він створює всі ці файли для Ви, і я поняття не мав, що таке -
що це?
Він створив всі ці файли, і тільки я хотів створити просту програму,
просто HTML сайт.
І я навіть не міг нічого робити.
Так що я був трохи приголомшений.
Але це одна з речей, які, як тільки ви розумію, настільки стає все
набагато ясніше.
Так що не бути перевантажені першим Вид, що ви створюєте в першу чергу.
>> Так що ж відбувається створює Rails всі ці файли.
Так один з, що є док, документація.
Дб, що це пов'язано з базою даних.
Lib, який бібліотеки увійти.
Громадська, сценарій, і деякі речі.
Значною мірою все ви збираєтеся хвилюватися про це папка додаток, там.
Це папка, що містить вашу програму.
Всі інші файли -
деякі з них важливі, а ти дізнаєтеся про це пізніше.
Але вони просто тут, щоб містять рамки.
Таким чином, перший наріжними каменями будинки ви, хлопці будують, добре?
>> Але папка додаток -
от дійсно важливим.
І папка додаток має активи.
Активи в значній мірі все що йде.
Зображення наприклад, все це статичне, що збирається бути завантажені
на ваш сайт.
Тому зображення, JavaScript, CSS -
ті види речей є активами.
Контролери -
ми збираємося більше поговорити про Що являють собою контролери, моделі,
і поля в секунду.
І помічники є функціями, які ви можна використовувати у всьому коді
щоб допомогти вам зробити щось.
Такі функції, як увійшли в систему, для приклад - user.loggedin.
Це функція, яка, ймовірно, ви повинні використовувати у всіх частинах вашого
Додаток.
Таким чином, ви можете помістити щось на зразок що у вашому помічнику.
>> Конверти -
от якщо ви збираєтеся відправити лист для користувачів, ви
хочете використовувати поштову програму.
І моделі та подання, ми збираємося говорити про це прямо зараз.
Таким чином, контролер представлення моделі, це основний наріжний камінь Рубін на
Рейки, і більшість структур в даний час, щоб бути чесним.
Отже, ще раз, ми відокремлюємо весь наш код в трьох різних частин.
Модель -
модель в основному бази даних.
Він обробляє речі в базі даних.
>> Таким чином, кожен таблиці в базі даних має відповідний файл в моделі.
Так що це свого роду стіл для користувачів.
Так ви зберігаєте інформацію, як ім'я користувача, їхні листи, їх
адреса, їх пароль, тощо.
Ви будете мати один файл в модель користувач, що викликається RB -
RB для Ruby.
І там ви будете мати всі методів і змінних.
Змінні збираєтеся відповідають з ім'ям користувача, електронну пошту, і
все.
>> І ви будете мати методи.
Це буде щось відносно -
ви збираєтеся обробляти цю інформацію в базі даних.
Щоб створити модель з Rails, ви просто використовуєте Rails генерувати.
І створювати речі у Rails, вам насправді потрібно термінал.
Так що це дуже термінал обгрунтованих рамок.
Ви просто увійти в термінал, і не рейки, генерувати модель.
І ім'я цієї моделі є користувач.
І я просто хочу мати дві змінні, дві колонки, в моєму столі.
Так от по електронній пошті.
Електронна пошта є тип рядка.
Пароль, пароль також тип рядок.
Це єдині дві речі.
Це свого роду спрощеної таблиці користувачів.
Але ви могли б повністю поставити сотню річ там, якщо ви хотіли.
>> І рейки також робить його дуже, дуже просто, щоб всі
види відносин бази даних.
Так зазвичай, коли у вас є таблиці у вашому У базі, вони не дуже-то
незалежні один від одного.
Давайте подумаємо про.
Ви хочете, щоб купувати і продавати продукти онлайн.
Отже, у вас є сайт, де ви хочете купувати і продавати товари.
Таким чином, кожен користувач має багато продуктів, які цей користувач готовий продати.
І кожен користувач також має багато угод що тривають, або
щось в цьому роді.
І угоди з іншим користувачем.
Кожна транзакція належить до двох різним користувачам.
Користувач, який купує і користувач, який продає.
>> Отже, це так званий відносини бази даних.
І тут у нас є саме ті ключові слова, має багато і належить.
Такі найбільш важливі з них.
І ви тільки збираєтеся сказати, для Наприклад, це приклад того,
модель в 2017 веб-сайті Гарвардського університету.
Знову ж, студенти в тут -
кожен студент на сайті, студент є модель, являє собою таблицю бази даних.
Кожен студент повинен був багато книг, тому що вам міг сказати, що ваші улюблені
книги, правильно.
Так кожна книга належить студент тут.
І атрибут доступний -
от тільки кажуть, тих, є змінними.
Такі змінні доступні від цієї моделі.
І змінні автор книга, опис, жанр, і
назва книги.
Так що просто інформація щодо книгу.
>> А от у мене є метод, який просто сортує все.
Так визначити і закінчується, от тільки кажучи, ось іде мій метод.
Self.sorted_all.
Ось тільки, дай мені все сортується, і це, як ви реалізуєте
алгоритм сортування, які досить легко.
Але в принципі, це, як Модель виглядає, ОК.
Хто-небудь є питання, що стосуються ця база даних річ?
Відносини?
Це ясно?
Так.
>> АУДИТОРІЯ: Чи можете ви зробити алгоритм сортування?
>> GABRIEL GUIMARAES: алгоритм сортування, ОК.
Коли ви звикнете до синтаксису Ruby, це буде ясно.
Але в принципі, elems є Book.all.
Так книга це ім'я моєї моделі.
При створенні моделі, вона поставляється з всякі хороших методів для вас.
Так dot.all це метод, який повертає всі книги.
Але знайти, наприклад, буде шукати одна книга і повернути цю книгу, або
щось в цьому роді.
І так elems це все.
І я просто говорю elems.sort.
Сортувати вбудований в Рубіні функція.
>> І, зробити AB.
Так що це дійсно знову -
ви збираєтеся сортувати.
Але ви збираєтеся отримати цей аргумент для мене.
І аргумент використовує - це один з твердіші речі в Рубі насправді,
це зробити річ.
Але як тільки ви розумієте це все приходить дуже, дуже інтуїтивним.
Таким чином, AB, це говорить місце тримачі, які я збираюся використовувати - як
змінні я збираюся використовувати, є називатиметься і б.
І ті книги.
>> Так через роду необхідно порівняти елементи, пам'ятайте, що?
Отже, коли ви розберіться, вас порівняти два елементи.
Я збираюся сказати, що кожен раз, коли ви збираєтеся порівнювати -
так що це, я передаю сортувати аргумент.
І аргумент все від робити, щоб і тут, добре?
І цей аргумент, просто говорить ніби як порівнювати.
Сортувати б працювати тут, але це порівняв би з їх
за замовчуванням порівняно алгоритм.
Я хочу, щоб порівняти в дуже специфічна спосіб, а саме, коли книга
була створена, коли кожен Книга була створена.
>> Тому я кажу, що, скажімо, ім'я першим Книга являє собою і назва
Друга книга, як б, я хочу роду для сортування щось на основі b.created_at це
дивно символ, a.created_at.
І, що дивно символ є скороченням бо якщо один більше, ніж
друга, повернути 1.
Якщо один одно другий, то повертається нуль.
Якщо один менше, ніж другий, повернення мінус 1.
Так ось що, що дивно символ.
>> Але це не важливо.
Я маю на увазі, те, що я хочу, щоб ви, хлопці, щоб отримати зараз є ідея, що база даних -
ви можете мати модель є.
Так що вам не доведеться турбуватися про підключенні і використанні SQL заяву,
тощо.
Він також може створювати двері Ін'єкції SQL і все
роду проблеми безпеки.
У цьому випадку, ви не турбуватися про це.
Ви просто використовувати такі методи, як book.all.
І, що на тлі звичайно, збирається в базу даних, і це
збираєтеся використовувати заяву SQL щоб отримати всі книги.
Але ви не повинні турбуватися про це.
Це винос, добре?
>> І коли у вас є belongs_to про як це, це означає, що
коли у вас є об'єкт книгу, ви може бачити те, що є його учнем.
Отже, які студент має цю книгу?
Таким чином, ми можемо просто використовувати book.student, і що дає те, що студент є.
І це дійсно особливість, щоб мати.
>> Добре, тепер вигляд.
Таким чином, модель є те, що взаємодіє з базою даних, чи не так?
Вид основному HTML, і CSS, а деякі JavaScript.
І це те, що користувач насправді бачить.
Користувач не збирається см. базу даних.
Він збирається подивитися деякі дані з У базі вбудованих в глядача.
Рубін на рейки робить його дійсно просто зробити поля.
По-перше, тому що це вже створює його для вас, з коробки, макет.
>> Макет в основному те, що -
якщо всі ваші сторінки мають логотип на верхній і, я не знаю,, деякі меню або
щось на зразок цього, що всі ваші сторінки Частка в загальному, то ви не
потрібно створити багато, багато, багато HTML файли, де всі файли мають, що
ж HTML код.
Я маю на увазі, що це нерозумно, тому що ти просто повторюючи код між різними файлами.
Це безумовно не хороший підхід.
>> Так Рубін на рейки створює цей макет для вас.
І це просто кажу, всі мої сторінки будемо мати цей HTML, цю голову
Назва тут, і ті стилів посилання тег.
Підключіть тут усе своє CSS.
Підключіть тут усе своє наявність і деякі мета-теги.
От тільки те, що вони зробити автоматично.
А потім, в кінцевому голову, тепер тут починається тіло.
І тепер це мій фактичний зміст.
Так що, якщо я хотів, щоб покласти щось подібне, Меню тут, я б поставив його прямо над
це місце, або щось на зразок цього, так що всі мої сторінок поділився нею.
Таким чином, схема є загальним на всіх сторінках.
>> Тепер, коли вихід тут тільки говорить, немає Незалежно від того на які сторінки Це в, просто
підключити в змісті, що сторінка тут, добре?
А тепер це, наприклад, Зміст одній сторінці, що буде
підключений до цієї прибутковості заяві автоматично Rails.
Але це макет поділився на всіх сторінках.
І це є прикладом одній сторінці.
І це саме сторінка , В якому перераховані всі книги.
Так що це є одним з основних таблиці HTML нагорі.
Так оголошенні книги, назва, автор, опис, жанр.
>> І ось ми використовуємо, знову ж таки, деякі Синтаксис Рубі, @ books.each--
@ Рода каже, що у змінній є глобальною, в деякому сенсі.
Тому що ця змінна було насправді заявив в контролер, який
Ви будете бачити прямо зараз.
Але просто прийняти на віру, що це @ Книги це змінна, яка представляє собою список
всі книги.
Так books.each, робити, і знову ж, це просто кажу, як ви хочете назвати
кожен з ітераторів так, що ми не доведеться турбуватися про чотири, Int я
бла, бла, бла.
Ми просто беремо кожен з елементи і використовувати їх.
>> Так що це книга, а потім просто роздрукувати тут. book.title, book.author,
book.description, і бла, бла, бла.
А ось link_to.
Так link_to просто тег посилання що користувач може натиснути на і
йде на інший сайт.
Link_to, показати, що іншу книгу.
Так, якщо користувач дуже зацікавлена ​​в ця книга, то він може просто натиснути на шоу.
Або натисніть на редагування, якщо він хоче редагувати книгу.
Або знищити, якщо він хоче видалити книга з бази даних.
ОК, чи означає це має сенс?
Добре.
>> Нарешті, контролер.
Тому в основному контролер Інтерфейс між
модель і вигляд.
Таким чином, модель є частиною вашої Код, який має базу даних -
кожна таблиця в базі даних має відповідний файл в
модель, і так далі.
І як модель і вид взаємодіяти?
Таким чином, через контролер.
Який контролер робить це модель для щось на зразок, наприклад,
помістити всі книги всередині змінної.
Як цей, @ книг.
>> І вона повинна бути глобальною з цим на речі, тому що це буде
доступ поданні.
Це не буде використовуватися протягом сам контролер.
І це якраз уповільнює інформацію, яка вид збирається використовувати.
Наприклад, контролер перевіряє якщо користувач знаходиться в мережі.
І як це зробити?
Це насправді просить модель тому, що модель має
Інформація про користувача.
Він має таблицю користувачів, книг стіл, інші таблиці.
Таким чином, контролер запитує, користувач знаходиться в мережі.
Якщо користувач знаходиться в мережі, контролер обробляє такі речі, як покласти печиво,
або щось в цьому роді, щоб поставити печатку сказати, що користувач знаходиться в мережі.
Немає необхідності знову ввійти в систему.
>> І він збирається завантажити змінну Користувач, наприклад, що
Подання може використовувати.
І вигляд може покласти щось тут, наприклад, вітати user.name.
Так він збирається сказати, ласкаво просимо Джон, ласкаво просимо Джеймс -
щось на зразок цього, чи не так?
Так що всі ці змінні використовуються в вид будуть завантажені в
контролер і будуть під'їхав з моделі.
>> Це приклад контролера.
Тому у нас є, в основному, кожен -
ми називаємо ці речі дії.
Так індекс дію.
Це функція Рубі.
Це метод Рубі там.
Але для дзвінків контролера Ті речі, дії.
І кожна дія пов'язане з маршруту.
Так ось цей маршрут, наприклад, є отримання звіту / книги.
Так що, якщо ви йдете в harvard2017.com/books, що станеться це код
буде називатися.
>> І є файл -
дозвольте мені відкрити цей дійсно швидко.
Там у файл з ім'ям файл вихідних.
Це не відкриття.
Таким чином, є файл з ім'ям файл вихідних , Що в основному відповідає -
О, тепер він відкривається.
Тут маршрути.
Тому в основному відповідає напруга, Активація / новий наприклад,
щось в контролері.
Так що цей контролер називається контролер активації, але тут,
ми маємо книги, наприклад.
Так матчів -
книги / новий, з контролером книги, дію новий.
Так в основному, дуже проста речі.
>> І ось, якщо ви повинні були отримати / книги, слеш ідентифікатор книг, слеш новий,
Ви йдете до того, що Метод там Рубі.
Так от, те, що цей показник робить тільки завантаження журнал.
Це те, що -
Я увійти всі книги в журналі.
І залагодити все це.
Так що це збирається повернутися всі впорядковані книги.
Це, знову ж таки, в базі даних.
Таким чином, це метод моделі.
Ви бачили цей метод є створений в моделі.
Тепер це просто завантаживши всі книги і покласти, що у змінній,
можна побачити, уявлення.
>> Тому що ви не можете, в середині Ваш HTML код, ви не можете подзвонити
щось безпосередньо з моделі, тому що з двох причин.
По-перше, з міркувань безпеки, так як це не зовсім цікаво бути
завантаженні інформації безпосередньо всередині кожен HTML це в базі даних.
А по-друге, щоб зберегти ваш Код дійсно організований.
Так відокремити точно різні частини.
Так BookLog.sorted_all, це в бази даних і це буде введено в
змінна @ книг.
І тепер ця змінна доступна в межах вашого HTML коду.
Таким чином, ви можете просто покласти всі книги там так само, як ми зробили, прямо тут.
Це змінної.
>> І візити respond_to зробити | Формат |, це всього лише свого роду синтаксису Ruby, для
якщо користувач просить мене для HTML код, я збираюся
відповісти HTML коду.
Якщо користувач запитує мене з JSON коду, яка є те, що використовувати веб-додатки
спілкуватися між собою, вони зазвичай використовують JSON чи якоїсь іншої
Такі речі.
Так що просто відповідає, використовуючи ті два різних форматах.
Але для звичайного користувача, це не потрібно було б бути тут.
Ви б просто відповісти HTML, і це нормально.
Так що не дуже стурбовані тим, що багато про це.
Це єдиний рядок коду в нашому контроль, як це завантаженні з HTML
У базі, вкладаючи в чомусь, що доступною поданні.
>> А потім новий, тому тут Я створюю книги.
Але для створення книг, мені потрібно студенту тому що мені потрібно знати студенту
чиї книги це належить, прямо.
Так @ студентської = Студент.
Студент, знову ж таки, ми починаємо з великий S є зразковим студентом.
ОК, так що це модель студента, це журнал модель книга.
Student.find, так що я збираюся знайти студент, використовуючи параметри ID.
params.id, це просто зрозумійте мене значення цього ID, який був переданий -
і URL.
>> Просто збираюся шукати цього студента.
І в першу, ми збираємося перевірити якщо студент має деякі пісні
і бла, бла, бла.
І це вже обробляє випадок, коли студент
не існує, наприклад.
А потім, ще, ми просто реагувати до того ж з використанням HTML.
І тоді ми можемо дозволити користувачеві створювати свої пісні.
Так що це нове.
Новий зазвичай використовується для, нехай користувачеві створювати щось.
А тут ще створити дію , Який зазвичай використовується для -
фактично поклав пісні в базі даних або щось в цьому роді.
Але як тільки ви починаєте використовувати Rails, ці речі будуть
багато, багато іншого зрозуміло.
ОК, охолодити.
Будь-які питання досі?
Чи має це має сенс з контролерами, моделі, поля -
да?
>> Знову у вашому Rails додатки -
так що все, що можна знайти в тут.
Так у вас є додаток, контролери, тих, всі з моїх контролерів.
Так, наприклад, книги контролювати.
Це той, який ми тільки що бачили.
А потім переглядів.
І кожен контролер має пов'язане уявлення, чи не так?
Так автоматично при виклику цього Індекс тут, наприклад, або коли ви
називають це книги нового, то думка, книги, нова збирається назвати.
>> Так Rails робить все автоматично.
Таким чином, кожен контролер має пов'язаний з ним переглядати і всі моделі -
тут у мене є один, два, три, чотири, п'ять моделей.
Але це зразковим студентом, так що ті, змінні, які все
студенти мають - локалізацію, дата народження.
Студенти трохи більше ускладнюється тим, що у кожного студента є
більш інший метод в стислому вигляді.
Але це всього лише обробка Таблиця, мав усі
студенти в базі даних.
>> І, добре, установці Rails.
Установка Rails, чесно кажучи, не найпростіша річ.
Але як тільки ви закінчуєте все, це дуже, дуже легко.
Так установці Rails, ви просто йдете в сайт, rubyandrails.org / завантажити
і слідувати їх вказівками там.
Завантажити все.
І ви можете зробити це або в Appliance, в CS50 Appliance, на
Вікна, на Mac, або будь-якої операційної Система за вашим вибором.
Рубін на рейки працює на все.
>> Напевно ви вже встановили Рубін якщо у вас є Mac або -
в цих засобах я думаю Рубін -
Я не впевнений.
А потім ви просто мати цю програму.
І якщо ви хочете створити новий веб-додаток, ви просто
зробити Rails, новий, блог.
Рейки, нові -
Я не знаю, -
ім'я вашого сайту.
І це так просто.
>> Це збирається створити всі ті, файли я тільки що показав вам.
Але модель, вид, а також Контролер НЕ БУДЕ
населений ще.
Ти просто доведеться піти туди і заповнити ці три папки.
Так шанси, ви хочете створити модель, наприклад, реалізувати один
моделювати в першу чергу.
Отже, ще раз, завжди намагається вкусити менше біти проблеми за один раз.
>> А потім скажемо, створити модель для користувачів.
Це перше, що якщо у вас є користувачі.
Тоді я хочу створити модель так само, як ми показали тут.
Рейки, генерувати, модель, користувач, а потім листи рядок - у нас є, що тут.
І просто створити цю модель, так.
Рейки генерувати модель лист користувача: рядок пароль: рядок.
>> А потім створенні контролера яка має справу з користувачем.
І ви можете створювати нових користувачів і зробити подібні речі.
І тоді ви можете переходити до створення інші сторінки сайту.
Круто, питання?
Так.
>> АУДИТОРІЯ: [нерозбірливо]
>> GABRIEL GUIMARAES: Так, так, ви безперечно повинні піти в поле зору.
Це дуже хороше запитання.
Таким чином, точка зору, що насправді містить свій HTML.
Так що це те, що користувачі побачимо.
Знову ж, тут це приклад виду.
Він має HTML-код і Рубі код одночасно.
Тому код Рубі є навести з бази даних, наприклад,
, Які були завантажені на контролері.
Так що змінна @ книг, наприклад, має всі книги і таблицю
книг в базі даних.
Ми переконалися, що це було в контролері.
>> І вид -
кожної зі сторінок з вашого сайту є буде мати один асоційований вид.
Так що, якщо ви йдете на головну сторінку, дуже перша сторінка, harvard2017.com.
Це показує одну сторінку.
А потім ви йдете скоротити анкету.
Це збирається піти до контролера ось контролер профіль.
І контролер профіль буде щоб дати вам уявлення профілю.
І вигляд профілю буде виглядати кілька, як це, але це буде
є інформація про користувача, а не про книжки.
>> Так що це HTML код і CSS, і ті, речі, які користувач бачить
з кодом Рубі -
що насправді друкує речі з бази даних.
Це більш зрозуміло?
Я сподіваюся.
>> АУДИТОРІЯ: HTML код використовується для насправді зробити сайт, який
користувач бачить, але код Рубін те, що робить сайт працювати?
>> GABRIEL GUIMARAES: Код Рубін конвертується в HTML.
Так що користувач отримує тільки HTML, ОК?
Це тільки HTML.
Це book.title збирається перетворити в значення book.title в HTML, ОК.
Так що це все на сервері, і тому це залежить від того, що книги там
на сервері прямо зараз.
Але те, що сервер буде негайно сенс тільки HTML код, ОК.
>> Але вигляд просто дає макет що HTML збирався виглядати
і те, що змінні будуть.
Цей вид роздрукувати, ОК.
Ці речі є в основному друкувати аутів.
Вони збираються надрукувати змінні, ОК.
Так що ж таке тільки HTML, ті -
автор, назва, опис.
Це статичний контент.
Це не зміниться.
Це просто HTML код.
Такі роздруківки для змінних -
речі, які залежать.
Cool, ще питання?
Добре?
Так.
>> Зали: Я думаю, що ви робили все редагування в іншому тексті
монтаж програми.
Чи повинні ми так само завантажити що?
>> GABRIEL GUIMARAES: Так, мені подобається це текстовий редактор називається TextMate.
І це дійсно добре.
Це добре підходить для Ruby.
Це кольори речі дуже акуратно.
Так TextMate, Т-Е-Х-Т. Я збираюся покласти, що, тримайся -
>> Я маю на увазі, ви можете використовувати Gedit або все, що завгодно.
Але це є специфічним для Mac, і це дійсно охайний, оскільки вона ставить все
Ваші файли там.
І в Рубін на рейки, необхідно для перемикання файли багато.
Так що це багато, багато файлів просто перейти з одного файлу, перейти до
один файл або інший.
Так TextMate є дуже хорошим, але Є багато там.
Ще питання?
Добре, так?
>> АУДИТОРІЯ: Чи є мобільний розвиток через Рубін на рейки?
>> GABRIEL GUIMARAES: Я чув речей.
Я не використовував їх.
Ви могли досліджувати більш детально про це.
Я не впевнений, чи є хороша річ там.
Добре, так?
>> АУДИТОРІЯ: [нерозбірливо]
>> GABRIEL Гімарайнш: Чи не рейки, ймовірно, Рубі масив.
Відкрийте вікно терміналу і тип, "Рубін".
Так, напевно, і тоді ви тільки повинні встановити Rails.
Але якщо ви збираєтеся встановити новий Рейки 4,0, який я дуже рекомендую,
Ви повинні завантажити Рубін 2.0.
Це новий теж.
І нові рейки 4.0 є щось Здорово, що
що і відносно активів.
Він обробляє активів.
Активи знову образи, CSS файли, і файли JavaScript.
Так що дійсно приємна річ, що Рубін на Рейки ж для вас це все з тих CSS
файли, які ви повинні і все -
він просто пов'язує все догори в один величезний файл, без пробілів або що-небудь,
мінімізувати час користувач повинен скачати цей код з вашого сервера.
>> Тому, коли ви бачите на вашому комп'ютері, це буде мати як 15 CSS-файлів.
Або багато, багато різних файлів CSS.
Але врешті-решт, що Рейки автоматично робить для вас це ставить
всі разом в один величезний файл так, що він зводить до мінімуму час запиту.
Це дійсно здорово.
Так?
>> АУДИТОРІЯ: [нерозбірливо]
>> GABRIEL GUIMARAES: Абсолютно вірно.
Так, інтеграція Google Maps.
Це API JavaScript від Google.
Так що я просто пішов на сайт Google.
У них є ця API і я Google Maps завантажили код і інтегрували його
в полі мого зору.
Так що я повинен був зробити там це я повинен був отримати
місця з бази даних.
Це було зроблено в контролері.
Так що я пішов до контролера -
де контролер.
Контролер виглядала так.
Є всі місцях студенти, покласти все це у великій
змінна, великий список, що має всі місця.
>> І з точки зору, тому що JavaScript API щось в
дивитися, правильно?
Оскільки JavaScript виконується безпосередньо в HTML Код, він збирається бути спрямовані
комп'ютер користувача.
І з точки зору, я завантажив все, що Інформація в Google API.
І він зробив усе, що для мені, що це дійсно круто.
Але якщо ви хочете використовувати речі в фоновим, і це, як бібліотеки, для
приклад, знову ж таки -
інтеграція з Facebook.
Це те, що багато, багато, багато додатків використовують в даний час.
>> Так є свій інтеграцію з Facebook , Тому що це набагато простіше просто
увійти з Facebook, ніж створювати рахунку і бла, бла, бла.
Тоді ви просто використовуєте камінь, і це, як просто, як йти до вашого перлина файлу.
Джем файл являє собою файл називається перлиною файл в джерело каталозі вашого Рубін на
Рейки проект.
Просто підіть туди і додати новий коштовний камінь.
А ви подивіться його на Google.
Є багато, багато, багато дорогоцінних каменів.
Там одна, що спеціально робить це для інтеграції Facebook.
Я не впевнений, що йому ім'я.
Просто Google це, і ви збирається знайти його.
Добре, ще питання?
Дивовижний, спасибі, що прийшли.