GABRIEL Guimarães: Ini adalah CS50. Selamat datang ke Menakjubkan Web Apps dengan Ruby on Rails. Jadi bagi sesiapa yang berminat dalam web pembangunan dan membuat laman web, web aplikasi, Ruby on Rails adalah ini alat hebat yang Twitter, GitHub, Groupon, dan segala macam benar-benar bagus, dan besar, aplikasi web menggunakan dalam beberapa tahun kebelakangan ini. Dan ia adalah benar-benar, benar-benar sejuk ciri, alat yang sejuk, kerana ia baru. Jadi ia mempunyai semua yang berkuasa baru teknologi dimasukkan ke dalam satu rangka kerja yang membantu anda berurusan dengan pelbagai perkara yang menakjubkan. Tetapi apa yang rangka kerja? Jadi rangka kerja yang pada dasarnya sesuatu yang mencipta - apabila anda memulakan laman web, jika anda mula dari awal, seperti anda membuka gedit sana, dan anda ingin memberi kod kepada semua HTML anda, dan kod semua anda PHP, semua CSS anda, segala-galanya dari awal - yang hanya akan menjadi banyak kerja. Dan rangka kerja yang betul-betul memberikan anda separuh daripada laman web yang dilakukan sudah. Jadi anda bermula dengan setengah laman web yang mempunyai segala-galanya ada untuk anda. Seperti sambungan pangkalan data, dan semua macam perkara yang anda perlu bimbang kira-kira jika anda melakukannya dari awal, anda tidak perlu bimbang tentang orang-orang butiran tahap rendah. Tetapi hari ini kita akan mengeksport salah satu laman web yang yang bayat daripada kelas 2017 mungkin biasa. Jadi laman web ini adalah laman web yang saya lakukan untuk kelas kami sepanjang musim panas. Ia adalah laman web di mana pelajar-pelajar kelas 2017 boleh log masuk dan berinteraksi antara satu sama lain. Dan maka ini adalah peta - semua orang, di mana orang ramai. Dan kita mempunyai permainan buku, permainan lagu di mana kita melihat lagu-lagu rakyat dan buku rakyat. Apa yang mereka suka membaca, apa yang mereka suka mendengar. Dan yang paling menarik ia adalah bahawa ia benar-benar membawa saya tiga jam kod semua itu. Kerana jika saya terpaksa melakukan segala-galanya daripada awal, seperti membuka gedit, ia mungkin akan mengambil saya 20, 30 jam. Tetapi dengan Ruby on Rails, kerana semuanya telah ditetapkan untuk saya, ia hanya mengambil saya tiga atau empat jam, atau sesuatu seperti itu. Jadi apa Ruby on Rails. Ruby on Rails, sekali lagi seperti yang kita sudah berkata, adalah satu rangka kerja. Ini ialah gambar rangka kerja. Jadi, anda akan mula membina sebuah rumah, anda sudah mempunyai separuh daripada rumah dilakukan. Itulah rangka kerja tersebut. Dan Ruby on Rails adalah betul-betul seperti itu. Dan anda perlu menganggapnya sebagai, anda mula laman web, anda memulakan web anda permohonan, kita sudah mempunyai separuh daripadanya dilakukan di sana. Tetapi pertama sekali, apa yang Ruby? Ruby on Rails menggunakan paparan model pengawal, yang merupakan paradigma, yang adalah benar-benar menarik - dan semua aplikasi pada hari ini menggunakan sesuatu seperti itu. Idea mengasingkan sesuatu ke dalam tiga bahagian, model, pandangan, dan pengawal. Kita akan bercakap sedikit lebih lanjut mengenai yang kemudian. Pertama, apa yang Ruby? Jadi ini adalah Ruby. Dan ini adalah simbol bahasa dipanggil Ruby. Ruby adalah salah satu agak baru ditafsirkan bahasa, jadi skrip. Ia adalah satu bahasa yang tidak disusun seperti C. Ia disusun dalam pelarian. Jadi itulah yang baik kerana, seperti PHP, sebagai contoh juga ditafsirkan, adalah tidak disusun. Itulah yang baik kerana mudah alih. Jadi anda hanya lulus kod anda dari satu mesin yang lain. Dari mesin Linux, untuk Windows mesin, untuk Mac atau Apple mesin, atau sesuatu seperti itu. Dan anda tidak perlu bimbang tentang butir-butir mengenai setiap satu daripada tertentu sistem operasi. Ia akan bekerja di mana-mana. Dan Ruby adalah bahasa yang - anda semua mungkin ingat ini. Orang menggunakan fungsi hash yang dilaksanakan dalam C untuk jadual hash minggu lepas dan mempunyai pelbagai kesilapan segmentasi. Dan kemudian perkara perlu bimbang sama ada tali bahawa saya di sana, rentetan i di sini, sebenarnya huruf kecil atau huruf besar, atau ini jenis membimbangkan butiran tahap rendah. Baik dalam Ruby, jika anda mahu untuk melaksanakan jadual hash, ini adalah bagaimana anda buat jadual hash. Anda berkata, kamus, itu nama yang pembolehubah saya, = "Hash.new". Dan kemudian kamus ["Anu"], dan apabila saya menambah foo ke meja hash saya, saya hanya mengatakan foo ada. Dan kemudian jika saya mahu untuk memeriksa jika foo di sana, saya hanya mengatakan jika kamus ["Anu"] == pulangan benar benar. Wah, dan itulah jadual hash anda. Itulah pelaksanaan jadual hash di Ruby. Jadi semua orang mahu mereka boleh mempunyai digunakan sesuatu seperti Ruby untuk lepas Serangga minggu ini, bukan? Kami mempunyai pelbagai sebab untuk mahu menggunakan bahasa seperti Ruby. Ruby mempunyai permata. Permata adalah nama untuk jenis yang perpustakaan di Ruby. Jadi segala macam ciri-ciri yang menarik yang anda boleh mempunyai, sebagai contoh, jika saya mahu untuk permohonan saya. Yang Harvard 2017 permohonan telah bersepadu untuk Facebook. Jadi, anda boleh log masuk, melalui Facebook, ke apl. Jadi, jika anda akan berbuat demikian, anda tidak perlu perlu bimbang tentang menghantar beberapa Permintaan HTTP ke Facebook, dan menunggu jawapan, dan memaksa tindak balas, dan blah, blah, blah. Anda hanya muat turun permata yang melakukan semua itu untuk anda. Dan kemudian anda tidak perlu bimbang tentang semua itu. Dan kemudian banyak membantu dalam talian, sudah tentu. Terdapat banyak, banyak, banyak laman web yang akan membantu anda kedua-duanya dengan Ruby dan Rails dengan. Dan ia adalah banyak keseronokan untuk kod. Tepat kerana anda boleh jangan risau mengenai masalah itu tidak begitu menyeronokkan. Seperti jika sesuatu yang kecil atau huruf besar, dan kemudian mengapa ini memberikan anda bersalah segmentasi, dan anda benar-benar boleh menyelam ke dalam sangat barangan yang menarik. Untuk menyelam ke dalam masalah benar-benar sejuk. Jadi Ruby adalah sama seperti kepada C dalam erti kata yang. Jadi ia tidak akan menjadi yang besar yang melompat sebenarnya. Jadi meletakkan, itu aplikasi cetak kami di Ruby. Saya fikir anda boleh menggunakan cetak juga, tetapi meletakkan adalah apa yang menggunakan semua orang. Jadi hanya meletakkan "Hello World". Anda boleh, atau anda tidak boleh, mempunyai kurungan melingkungi "Hello World" di sana. Anda hanya boleh memilih sama ada atau tidak menggunakan itu. Dan kemudian x = "1". Gelungan manakala kelihatan cantik lebih kurang sama. Ia hanya mempunyai kurang sintaksis. Ia adalah jenis bersih sedikit. Dan kemudian jika x> 25 meletakkan "Besar!" dan lagi meletakkan "kecil ...". Dan ia adalah jenis C dalam erti kata itu. Jadi jika anda melihat itu, anda boleh pendekatan mungkin faham semua yang berlaku. Tetapi ia lebih berkuasa. Lebih kuat kerana, lebih daripada itu, ia boleh jangan perkara yang tidak bahawa - beberapa jenis hackage sedikit. Dalam C anda tidak boleh lakukan dalam hanya melakukan dengan satu baris. Sebagai contoh, meletakkan "Saya # {x}". Ini hanya sintaks untuk meletakkan nilai daripada x di sini, dan tidak mencetak x watak. Dalam C yang anda perlu lakukan peratus d, dan kemudian meletakkan x ubah apabila koma di sini, atau sesuatu seperti itu. Dan dalam Ruby ada trengkas yang hanya melakukannya. Dan meletakkan ini, jika x> 3, jadi anda boleh meletakkan jika semua dalam satu baris. Dan kemudian senarai. Senarai di C, seperti satu pameran, anda perlu menjejaki berapa besar array anda atau jika tidak, anda mendapatkan segmentasi yang kesalahan. Array anda hanya satu jenis. Jadi ia sama ada pelbagai caj atau array integer. Dalam kes ini, saya mencipta satu senarai di sini, itulah pelbagai, yang mempunyai yang pertama elemen adalah rentetan, John, dan kemudian empat, dua - mereka ialah integer. Dan kemudian saya hanya menambah, senarai, yang Kiri Sudut Kurungan, Kiri Sudut Kurungan, tiga. Ini bermakna hanya menambah sesuatu untuk senarai saya. Jadi ia adalah jenis yang lebih menarik kerana jika anda mahu menggunakan ini sebagai hanya satu senarai mudah integer, anda boleh, sama sekali. Yang benar-benar halus. Hanya meletakkan integer sana. Tetapi jika anda mahu melakukan sesuatu yang lebih menarik, yang mempunyai lain perkara, yang telah - Saya tidak tahu, pelbagai senarai di di sana, atau objek lain yang lebih menarik, anda benar-benar boleh melakukannya. Ia sama sekali halus. Dan kemudian jika anda mahu melelar melalui senarai, anda boleh menggunakan jenis C-ish lebih daripada pendekatan. Itulah untuk gelung, anda untuk memulakan pembolehubah, i = "1", atau i = "0". Dan kemudian anda pergi, dan melelar, dan mendapatkan semua unsur-unsur. Tetapi anda juga boleh menggunakan ini pendekatan yang lebih Ruby seperti. Itu hanya seperti list.each a. Yang hanya berkata, saya kembali semua elemen dalam senarai itu. Dan melakukan dengan setiap unsur, memanggil mereka elem. Jadi ini adalah sekadar nama yang saya memberi kepada setiap elemen. Dan sekarang ini akan mengulangi untuk semua unsur-unsur, dan elem, ia akan menjadi cara kita mengakses bahawa elemen tunggal. Jadi anda benar-benar boleh berpegang kepada Pendekatan C, tetapi ini kerja-kerja juga. Dan ia adalah perkara yang sama, OK. Dan selain daripada itu, ia adalah benar-benar, benar-benar mudah untuk mengintegrasikan Ruby dan HTML kerana anda lelaki berminat dalam aplikasi web. HTML adalah sesuatu yang pasti anda akan menggunakan banyak. Dan di sini jika anda mahu meletakkan Ruby dalam HTML, hanya bermula di sini, <%. Ini bermakna, di sini Ruby bermula. Dan kemudian%>, jenis seperti PHP dalam erti kata itu. Di sini Ruby berakhir dan kemudian anda boleh hanya meletakkan jika anda di sini. Dan kemudian saya mempunyai beberapa pembolehubah user.logged_in. Dalam Ruby, kita biasanya menambah mereka, sama ada tanda soal siasat atau seru tanda, seperti watak bank, hanya untuk jenis membezakan antara fungsi kami. Tetapi anda hanya meletakkan bahawa demi anda sendiri. Ia bukan sesuatu yang mengubah apa-apa dalam fungsi. Jadi hanya untuk mengingatkan saya bahawa ini adalah satu fungsi - fungsi dalam dan Ruby, bukannya C, seperti yang saya kata sudah, mereka tidak perlu kurungan. Supaya log dalam perkara, itu fungsi, itu kaedah. Tetapi anda tidak jelas perlu meletakkan kurungan di sana. Jadi hanya meminta jika pengguna itu log masuk, dan jika pengguna itu log masuk, kini HTML bermula lagi. Jadi Welcome, dan di sini Saya mencetak user.name itu. Dan itu sahaja. Supaya agak lurus ke hadapan, bagaimana anda mengintegrasikan Ruby dengan HTML anda. Dan sumber-sumber, seperti yang saya katakan, terdapat pelbagai sumber untuk Ruby. Kalian semua boleh melihat ini selepas itu kerana kedua-dua video, dan slaid, akan boleh didapati dalam talian. Dan sekarang mari kita masuk ke Rails. Rails adalah cinta. Rails - jadi Ruby adalah bahasa beliau. OK, seperti PHP, hanya suka Python. Ia bahasa peringkat tinggi, tidak suka C. C tengah, bahasa tahap rendah dalam erti kata bahawa Ruby anda tidak perlu bimbang tentang memori pengagihan semula, dan petunjuk, dan orang-orang jenis perkara. Tetapi Rails adalah program ini yang telah ditulis dalam Ruby. Dan ia menggunakan Ruby, untuk mempunyai ini rangka kerja, untuk anda dapat membina aplikasi web yang menggerunkan. Jadi, anda perlu mula-mula memasang Ruby on mesin anda, tetapi kebanyakan mesin sudah mempunyai itu. Dan kemudian memasang rel di atasnya. Kami akan bercakap tentang itu kemudian. Dan mengapa Rails? Jadi MVC, itulah pengawal pandangan model kita bercakap tentang sedikit bit, membuat segalanya lebih mudah kerana ia membahagikan perkara-perkara yang konsep yang berbeza ke dalam berbeza bahagian permohonan anda. Masa yang kurang dibelanjakan untuk masalah peringkat rendah, sekali lagi, dan sangat, sangat popular sekarang. Jadi untuk semua mereka yang berminat untuk tempat kejadian memulakan, atau dalam sesuatu seperti memulakan perniagaan, dan orang-orang dalam pasaran teknologi yang memulakan perniagaan mereka sendiri sekarang benar-benar, benar-benar peminat Ruby on Rails kerana ia begitu cepat. Jadi anda boleh mendapatkan sesuatu dan berjalan dalam masa kurang daripada satu hari, dan itu benar-benar sangat menarik hujah untuk menggunakan Ruby. Dan Rails 4.0 - ia sangat segar dari oven sekarang. Jadi Rails 4.0 - Saya rasa keluaran pertama adalah pada bulan Mac tahun ini. Dan ia benar-benar baik, ia mempunyai semua macam baru, ciri-ciri sejuk. Jadi Ruby on Rails adalah satu rangka kerja itu sentiasa dikemaskini untuk semua teknologi baru. Kali pertama saya cuba menggunakan Ruby on Rails, aku ada masalah ini kerana saya mencipta aplikasi web pertama saya, dan ia kelihatan betul-betul seperti itu. Jadi ia mewujudkan semua fail-fail untuk anda, dan saya tidak tahu apa - apa yang ini? Ia menjadikan semua fail-fail, dan saya hanya mahu mencipta satu program yang mudah, laman web HTML yang mudah. Dan saya tidak dapat berbuat apa-apa. Jadi saya agak sedikit terharu. Tetapi itulah salah satu perkara yang sebaik sahaja anda memahaminya, segala-galanya menjadi begitu lebih jelas. Jadi jangan terharu dengan yang pertama penglihatan apa yang anda buat pada mulanya. Jadi apa yang berlaku adalah Rails mencipta semua fail-fail. Jadi salah satu yang doc, dokumentasi. Db, itu berkaitan dengan pangkalan data. Lib, itu perpustakaan log. Awam, skrip, dan beberapa perkara. Cukup banyak semua yang anda akan bimbang kira-kira adalah folder aplikasi, di sana. Itulah folder yang mengandungi permohonan anda. Semua fail-fail yang lain - sebahagian daripada mereka adalah penting, dan anda akan belajar tentang itu kemudian. Tetapi mereka hanya di sini untuk mengandungi rangka kerja tersebut. Jadi batu asas pertama dari rumah kamu sedang membina, OK? Tetapi folder app - itulah salah satu yang benar-benar penting. Dan folder app mempunyai aset. Aset adalah hampir semua yang yang akan datang. Imej sebagai contoh, semua itu statik yang akan dimuat turun ke laman web anda. Jadi imej, JavaScript, CSS - orang-orang jenis perkara adalah aset. Pengawal - kita akan bercakap lebih lanjut mengenai apakah pengawal, model, dan bidang-bidang dalam satu saat. Dan pembantu adalah fungsi-fungsi yang boleh menggunakan seluruh kod anda untuk membantu anda melakukan sesuatu. Fungsi seperti log masuk, untuk contoh - user.loggedin. Itulah fungsi yang mungkin anda perlu menggunakan di semua bahagian anda permohonan. Jadi anda boleh meletakkan sesuatu seperti bahawa dalam pembantu anda. Mailer - itulah jika anda akan menghantar e-mel kepada pengguna anda, anda mahu menggunakan Mailer a. Dan model dan pandangan, kita akan untuk bercakap mengenai hak yang sekarang. Jadi pengawal pandangan model, itu asas asas Ruby on Rails, dan yang paling rangka kerja pada masa ini, untuk menjadi jujur. Jadi sekali lagi, kita memisahkan semua kod kami kepada tiga bahagian yang berbeza. Model - model pada asasnya pangkalan data. Ia mengendalikan perkara-perkara dalam pangkalan data. Jadi setiap jadual dalam pangkalan data mempunyai fail yang sepadan dalam model. Jadi ia jenis meja untuk pengguna anda. Jadi anda menyimpan maklumat seperti nama pengguna, e-mel mereka, mereka alamat, kata laluan mereka, dan perkara-perkara seperti itu. Anda akan mempunyai satu fail dalam model yang dipanggil rb user - RB untuk Ruby. Dan di sana anda akan mempunyai semua kaedah dan pembolehubah. Pembolehubah akan sesuai kepada nama pengguna, e-mel, dan segala-galanya. Dan anda akan mempunyai kaedah. Yang akan menjadi sesuatu yang mengenai - anda akan mengendalikan maklumat ini dalam pangkalan data. Untuk membuat model dengan Rails, anda hanya menggunakan Rails menjana. Dan untuk membuat perkara-perkara di Rails, anda sebenarnya perlu terminal. Jadi ia adalah sangat terminal rangka kerja berasaskan. Anda hanya log ke dalam pangkalan, dan jangan Rails, menjana model. Dan nama model adalah pengguna. Dan saya hanya mahu mempunyai dua pembolehubah, dua tiang, dalam jadual saya. Jadi, itu e-mel. E-mel adalah rentetan jenis. Kata laluan, kata laluan juga tali jenis. Mereka adalah dua perkara. Ia adalah jenis jadual pengguna mudah. Tetapi anda benar-benar boleh meletakkan seratus perkara di sana jika anda mahu. Dan Rails juga menjadikannya sangat, sangat mudah untuk mempunyai semua macam hubungan pangkalan data. Jadi biasanya, apabila anda mempunyai jadual dalam anda pangkalan data, mereka tidak sangat bebas daripada satu sama lain. Mari kita fikirkan. Anda ingin membeli dan menjual produk dalam talian. OK, jadi anda mempunyai laman web di mana anda ingin membeli dan menjual produk. Jadi setiap pengguna mempunyai banyak produk yang pengguna ini sanggup menjual. Dan setiap pengguna juga mempunyai urusniaga banyak yang berterusan, atau sesuatu seperti itu. Dan urus niaga tersebut adalah dengan pengguna lain. Setiap transaksi milik kepada dua pengguna yang berbeza. Pengguna yang yang membeli dan pengguna yang jual. Jadi mereka adalah apa yang dikenali sebagai hubungan pangkalan data. Dan di sini kita telah betul-betul kata kunci, mempunyai banyak dan kepunyaan. Mereka adalah orang-orang yang paling penting. Dan anda hanya akan berkata, sebagai Sebagai contoh, ini adalah contoh yang model pada 2017 laman web Harvard. Sekali lagi, pelajar-pelajar di sini - setiap pelajar di laman web, pelajar adalah model, adalah jadual pangkalan data. Setiap pelajar mempunyai banyak buku kerana anda boleh mengatakan, apakah kegemaran anda buku, betul. Jadi setiap buku milik seorang pelajar di sini. Dan menyifatkan diakses - yang hanya berkata, orang-orang adalah pembolehubah. Mereka adalah pembolehubah diakses daripada model ini. Dan pembolehubah adalah pengarang buku, penerangan, genre, dan tajuk buku ini. Jadi hanya maklumat yang mengenai buku ini. Dan di sini saya mempunyai kaedah yang hanya menyusun segala-galanya. Jadi menentukan dan berakhir di sini, itu hanya berkata, di sini datang kaedah saya. Self.sorted_all. Yang hanya, memberikan saya segala-galanya disusun, dan bagaimana anda melaksanakan algoritma menyusun, yang agak mudah. Tetapi pada dasarnya, ini adalah bagaimana model yang kelihatan seperti, OK. Adakah sesiapa yang mempunyai soalan mengenai perkara pangkalan data ini? Perhubungan? Adakah itu jelas? Ya. PENONTON: Bolehkah anda melakukan algoritma jenis ini? GABRIEL Guimarães: The algoritma jenis, OK. Apabila anda digunakan untuk Ruby sintaks, ia akan menjadi jelas. Tetapi pada dasarnya, elems adalah Book.all. Jadi buku adalah nama model saya. Apabila anda membuat model, ia datang dengan pelbagai kaedah yang bagus untuk anda. Jadi dot.all adalah kaedah yang mengembalikan kesemua buku-buku. Tetapi, contohnya, akan mencari satu buku dan kembali buku itu, atau sesuatu seperti itu. Dan sebagainya elems adalah segala-galanya. Dan Saya hanya berkata elems.sort. Disusun adalah fungsi terbina dalam Ruby. Dan, melakukan ab. Jadi ini jangan lagi adalah - anda akan menyusun. Tetapi anda akan mendapat hujah ini untuk saya. Dan hujah menggunakan - ini adalah salah satu perkara yang sukar di Ruby sebenarnya, ini melakukan perkara. Tetapi sebaik sahaja anda memahami segala-galanya datang sangat, sangat intuitif. Jadi ab, ini mengatakan tempat pemegang yang saya akan digunakan - seperti pembolehubah saya akan digunakan, adalah akan dipanggil a dan b. Dan mereka adalah buku-buku. Oleh itu, disebabkan jenis keperluan untuk membandingkan elemen, ingat bahawa? Oleh itu, apabila anda menyelesaikan segera, anda membandingkan dua elemen. Saya akan mengatakan bahawa setiap kali anda akan membandingkan - jadi ini adalah, saya lulus untuk menyusun hujah. Dan hujah adalah segala-galanya daripada tugasan untuk dan di sini, OK? Dan hujah ini, hanya memberitahu jenis bagaimana untuk membandingkan. Disusun akan bekerja di sini, tetapi ia akan membandingkan dengan mereka lalai membandingkan algoritma. Saya mahu ia untuk membandingkan dalam yang sangat khusus cara, iaitu, apabila buku diwujudkan, apabila setiap buku telah dicipta. Jadi saya katakan, katakan nama pertama buku adalah dan nama daripada Buku kedua sebagai b, saya mahu jenis untuk menyusun sesuatu berdasarkan b.created_at ini simbol pelik, a.created_at. Dan bahawa simbol pelik adalah trengkas walaupun salah seorang adalah lebih besar daripada lain, kembali 1. Jika seseorang adalah sama dengan lain, kembali sifar. Jika seseorang lebih kecil daripada lain, pulangan tolak 1. Jadi itulah yang bahawa simbol pelik adalah. Tetapi itu tidak penting. Maksud saya, apa yang saya mahu anda semua untuk mendapatkan sekarang adalah idea pangkalan data yang - anda boleh mempunyai model di sana. Jadi anda tidak perlu bimbang tentang menyambung dan menggunakan pernyataan SQL, dan perkara-perkara seperti itu. Ia juga boleh membuat pintu kepada Suntikan SQL dan semua pelbagai masalah keselamatan. Dalam kes ini, anda tidak perlu bimbang tentang itu. Anda hanya menggunakan kaedah seperti book.all. Dan itu, di latar belakang sudah tentu, akan pangkalan data anda, dan ia akan menggunakan kenyataan SQL untuk mendapatkan semua buku-buku. Tetapi anda tidak perlu bimbang tentang itu. Itulah mengenai restoran, OK? Dan apabila anda mempunyai sebarang pernyataan belongs_to seperti ini, ini bermakna bahawa sekali anda mempunyai objek buku, anda dapat melihat apa yang pelajar itu. Jadi pelajar manakah yang mempunyai buku ini? Oleh itu, kita hanya boleh menggunakan book.student, dan yang memberikan anda apa yang pelajar itu. Dan itulah yang benar-benar bercirikan mempunyai. OK, sekarang pandangan. Jadi model adalah apa yang berinteraksi dengan pangkalan data, bukan? Pandangan ini pada dasarnya HTML, dan CSS, dan beberapa JavaScript. Dan itulah yang pengguna sebenarnya melihat. Pengguna tidak akan melihat pangkalan data anda. Dia akan melihat beberapa data dari pangkalan data tertanam dalam penonton. Ruby on Rails menjadikannya benar-benar mudah untuk membuat bidang. Pertama, kerana ia sudah mewujudkan ia untuk anda, keluar dari kotak, susun atur. Susun atur adalah pada asasnya sesuatu yang - jika semua halaman anda mempunyai logo yang di atas dan, saya tidak tahu, menu sebahagian atau sesuatu seperti itu, bahawa semua halaman anda bahagian yang sama, maka anda tidak perlu membuat banyak, banyak, banyak HTML fail di mana semua fail yang mempunyai kod HTML sama. Yang saya maksudkan itu bisu kerana anda hanya mengulangi kod antara fail yang berbeza. Yang pasti tidak pendekatan yang baik. Jadi Ruby on Rails mencipta susun atur ini untuk anda. Dan ini adalah hanya mengatakan, semua halaman saya akan perlu HTML ini, kepala ini tajuk di sini, dan mereka adalah gaya kunci pautan tag. Pasangkan di sini semua CSS saya. Pasangkan di sini semua JavaScript saya dan beberapa tag meta. Itu hanya sesuatu yang mereka lakukan secara automatik untuk anda. Dan kemudian, akhirnya kepala, kini di sini bermula badan. Dan sekarang ini adalah kandungan sebenar saya. Jadi, jika saya mahu meletakkan sesuatu seperti, menu di sini, saya akan meletakkan ia hak ke atas tempat ini, atau sesuatu seperti itu, supaya semua laman saya berkongsi ia. Jadi susun atur dikongsi oleh semua halaman. Sekarang hasil bahawa di sini hanya berkata, tidak ada kira apa muka surat ini adalah, hanya pasangkan kandungan yang halaman di sini, OK? Dan sekarang ini, sebagai contoh, kandungan satu halaman yang akan menjadi dipasang ke dalam penyata hasil ini secara automatik oleh Rails. Tetapi ini adalah susun atur dikongsi oleh semua muka surat. Dan ini adalah satu contoh satu halaman. Dan ini adalah betul-betul halaman yang menyenaraikan semua buku-buku. Jadi ini adalah jadual HTML asas sehingga atas. Jadi penyenaraian buku, tajuk, pengarang, Penerangan, genre. Dan di sini kita gunakan, sekali lagi, beberapa Ruby sintaks, @ books.each-- @ Jenis mengatakan bahawa pembolehubah anda adalah global dalam erti kata yang. Oleh kerana pembolehubah ini sebenarnya diisytiharkan di dalam alat kawalan yang anda akan lihat sekarang. Tetapi hanya mengambil mudah bahawa ini @ Buku adalah pembolehubah yang adalah senarai semua buku-buku. Jadi books.each, jangan, dan sekali lagi, ini adalah hanya mengatakan bagaimana anda mahu untuk menamakan setiap satu daripada iterators supaya kita tidak perlu bimbang tentang yang empat, int i blah, blah, blah. Kami hanya mengambil setiap satu daripada unsur-unsur dan menggunakannya. Jadi ini adalah buku, dan kemudian hanya cetak di sini. book.title, book.author, book.description, dan blah, blah, blah. Dan ini LINK_TO a. Jadi LINK_TO hanya tag pautan yang pengguna boleh klik pada dan pergi ke laman web lain. LINK_TO, menunjukkan buku tersebut. Jadi, jika pengguna adalah sangat berminat dalam buku ini, maka dia boleh klik pada persembahan. Atau klik pada edit, jika dia mahu untuk mengedit buku ini. Atau memusnahkan, jika dia mahu memadam buku itu dari pangkalan data. OK, adakah itu masuk akal? Baik. Akhir sekali, pengawal. Jadi, pada asasnya pengawal adalah antara muka antara model dan pandangan. Jadi model adalah sebahagian daripada anda kod yang mempunyai pangkalan data - meja masing-masing dalam pangkalan data mempunyai fail masing-masing dalam model, dan sebagainya. Dan bagaimana model dan pandangan berinteraksi? Jadi, melalui pengawal. Apa pengawal adalah ia adalah model untuk sesuatu seperti, sebagai contoh, meletakkan semua buku di dalam daripada pemboleh ubah. Seperti ini, @ buku. Dan ia perlu global dengan ini pada perkara kerana ia akan menjadi diakses oleh pandangan. Ia tidak akan digunakan dalam pengawal itu sendiri. Dan ia hanya melambatkan maklumat yang pandangan itu akan digunakan. Sebagai contoh, cek pengawal jika pengguna adalah dalam talian. Dan bagaimana ia berbuat demikian? Ia sebenarnya meminta model kerana model mempunyai maklumat mengenai pengguna. Ia mempunyai meja pengguna, buku-buku meja, jadual lain. Jadi pengawal bertanya sama pengguna adalah dalam talian. Jika pengguna adalah dalam talian, pengawal mengendalikan perkara-perkara seperti meletakkan cookie, atau sesuatu seperti itu, untuk meletakkan setem untuk mengatakan bahawa pengguna adalah dalam talian. Tidak perlu log masuk semula. Dan ia akan memuatkan dalam pembolehubah pengguna, sebagai contoh, bahawa pandangan boleh digunakan. Dan pandangan yang boleh meletakkan sesuatu di sini, sebagai contoh, selamat datang user.name. Jadi ia akan mengatakan, selamat datang John, selamat datang James - sesuatu seperti itu, bukan? Jadi semua orang-orang pemboleh ubah yang digunakan dalam pandangan akan dimuatkan dalam pengawal dan akan menjadi ditarik ke atas dari model. Ini adalah contoh pengawal. Jadi kita ada, pada dasarnya, setiap satu - kita panggil perkara-perkara tindakan. Jadi indeks adalah sesuatu tindakan. Ia adalah satu fungsi Ruby. Ia adalah satu kaedah Ruby di sana. Tetapi bagi panggilan pengawal perkara-perkara tindakan. Dan setiap tindakan yang berkaitan dengan laluan. Jadi di sini laluan ini, sebagai contoh, adalah mendapatkan kenyataan / buku. Jadi, jika anda pergi ke harvard2017.com/books, apa yang akan berlaku ialah kod ini adalah akan dipanggil. Dan ada fail - biarlah saya membuka cepat ini sebenar. Ada fail yang dipanggil fail mentah. Ia tidak membuka. Jadi ada fail yang dipanggil fail mentah yang pada dasarnya perlawanan - oh, kini ia membuka. Di sini, laluan. Jadi, pada asasnya perlawanan tekanan, pengaktifan / baru sebagai contoh, untuk sesuatu dalam pengawal. Jadi ada pengawal ini dipanggil pengawal pengaktifan, tetapi di sini, kita mempunyai buku-buku, sebagai contoh. Jadi perlawanan - buku / baru, untuk pengawal buku, tindakan baru. Jadi, pada asasnya, yang amat mudah perkara. Dan di sini, jika anda mempunyai untuk mendapatkan / buku, mengurangkan ID buku, slash baru, anda akan pergi ke yang Kaedah Ruby di bawah sana. Jadi di sini, apa yang indeks ini adalah melakukan hanya memuatkan log book. Itu sesuatu yang - Saya log semua buku-buku dalam log. Dan menyusun semua. Jadi ini akan kembali semua buku-buku disusun. Ini adalah, sekali lagi, dalam pangkalan data. Jadi ini adalah satu kaedah model. Anda melihat kaedah ini menjadi dicipta dalam model. Sekarang ini hanya memuatkan semua buku-buku dan meletakkan bahawa dalam pembolehubah yang dapat dilihat oleh pandangan. Oleh kerana anda tidak boleh, di tengah-tengah kod HTML anda, anda tidak boleh memanggil sesuatu yang terus daripada model, kerana kerana dua sebab. Pertama, atas sebab-sebab keselamatan kerana ia tidak benar-benar menarik untuk memuatkan maklumat langsung di dalam setiap HTML itulah dalam pangkalan data. Dan kedua, untuk memastikan anda kod benar-benar dianjurkan. Jadi memisahkan betul-betul bahagian yang berlainan. Jadi BookLog.sorted_all, ini dalam pangkalan data dan ini akan dimasukkan ke dalam pembolehubah @ buku. Dan kini berubah-ubah ini boleh diakses dalam kod HTML anda. Jadi anda hanya boleh meletakkan semua buku-buku terdapat sama seperti yang kita lakukan, di sini. Ini adalah pembolehubah. Dan lawatan respond_to melakukan | format |, ini hanyalah sejenis Ruby sintaks untuk jika pengguna meminta saya untuk Kod HTML, saya akan bertindak balas dengan kod HTML. Jika pengguna meminta saya dengan kod JSON, yang merupakan sesuatu yang menggunakan aplikasi web untuk berkomunikasi antara mereka sendiri, mereka biasanya menggunakan JSON atau beberapa lain jenis perkara. Jadi ia hanya bertindak balas dengan menggunakan orang-orang dua format yang berbeza. Tetapi bagi pengguna biasa, ini tidak perlu berada di sini. Anda hanya akan bertindak balas dengan HTML, dan itulah denda. Jadi tidak benar-benar bimbang bahawa banyak tentang ini. Ini adalah satu-satunya baris kod dalam kami kawalan kerana ia memuatkan dari HTML pangkalan data, menyediakan sesuatu yang diakses oleh pandangan. Dan kemudian baru, jadi di sini Saya mewujudkan buku. Tetapi untuk mencipta buku, saya perlukan seorang pelajar kerana saya perlu tahu pelajar di mana buku ini tergolong dalam, betul. Jadi @ pelajar = Pelajar. Pelajar, sekali lagi, kami bermula dengan S besar adalah pelajar model. OK, jadi ini adalah pelajar model, ini adalah buku log model. Student.find, jadi saya akan mencari pelajar menggunakan ID parameter. params.id, ini hanya mendapat saya nilai ID ini yang telah diluluskan - dan URL. Hanya pergi untuk mencari pelajar itu. Dan pertama, kita akan memeriksa sekiranya pelajar mempunyai beberapa lagu-lagu dan blah, blah, blah. Dan ini sudah mengendalikan kes apabila pelajar tidak wujud, sebagai contoh. Dan kemudian, yang lain, kita hanya bertindak balas kepada perkara yang sama dengan menggunakan HTML. Dan kemudian kita boleh membiarkan pengguna mencipta lagu-lagu mereka. Jadi ini adalah baru. New biasanya digunakan untuk, mari pengguna mencipta sesuatu. Dan kemudian ada tindakan yang mewujudkan yang biasanya digunakan untuk - benar-benar meletakkan lagu-lagu di dalam pangkalan data atau sesuatu seperti itu. Tetapi sebaik sahaja anda mula menggunakan Rails, perkara-perkara akan menjadi banyak lagi jelas. OK, sejuk. Apa-apa soalan setakat ini? Adakah ia masuk akal dengan pengawal, model, bidang - yeah? Sekali lagi dalam permohonan Rails anda - supaya semua itu boleh didapati di sini. Jadi, anda mempunyai aplikasi, pengawal, mereka semua pengawal saya. Sebagai contoh, buku mengawal. Itulah yang kita hanya melihat. Dan kemudian pandangan. Dan setiap pengawal mempunyai pandangan yang berkaitan, bukan? Jadi secara automatik apabila anda memanggil ini indeks di sini, sebagai contoh, atau apabila anda memanggil buku-buku baru, maka pandangan ini yang, buku, baru akan dipanggil. Jadi Rails tidak semua automatik untuk anda. Jadi setiap pengawal telah dikaitkan satu melihat dan semua model - di sini saya mempunyai satu, dua, tiga, empat, lima model. Tetapi ini adalah satu model pelajar, jadi mereka adalah pembolehubah bahawa semua pelajar mempunyai - penyetempatan, tarikh lahir. Pelajar adalah sedikit lebih rumit kerana setiap pelajar mempunyai Kaedah yang lebih berbeza yang berkaitan dengannya. Tetapi ini hanya mengendalikan jadual yang mempunyai semua pelajar dalam pangkalan data. Dan, OK, memasang Rails. Memasang Rails, untuk menjadi jujur, bukan perkara yang paling mudah. Tetapi sebaik sahaja anda melepasi segala-galanya, ia sangat, sangat mudah. Jadi memasang Rails, anda hanya pergi ke laman web, rubyandrails.org / turun dan ikut arahan mereka di sana. Muat turun segala-galanya. Dan anda boleh melakukannya sama ada dalam Appliance, dalam Appliance CS50, pada Windows, pada Mac, atau mana-mana operasi sistem pilihan anda. Ruby on Rails berjalan di atas segala-galanya. Kemungkinan yang anda sudah mempunyai Ruby dipasang jika anda mempunyai Mac atau - dalam peralatan Saya fikir Ruby adalah - Saya tidak pasti. Dan kemudian anda hanya perlu ini dipasang. Dan jika anda mahu untuk mewujudkan baru aplikasi web, anda hanya melakukan Rails, baru, blog. Rails, baru - Saya tidak tahu - nama laman web anda. Dan ia mudah itu. Ia akan mewujudkan semua orang-orang fail saya hanya menunjukkan anda. Tetapi model, pandangan, dan pengawal tidak akan menjadi penduduk yet. Anda hanya akan perlu pergi ke sana dan mengisi ketiga-tiga folder. Jadi kemungkinan adalah, anda ingin membuat model, sebagai contoh, melaksanakan satu model pertama. Jadi sekali lagi, sentiasa cuba untuk menggigit kecil cebisan masalah pada satu masa. Dan kemudian katakan, mewujudkan model untuk pengguna anda. Itu perkara yang pertama jika anda mempunyai pengguna. Kemudian saya ingin mewujudkan model seperti yang kita menunjukkan di sini. Rails, menjana, model, pengguna, dan kemudian e-mel tali - kita ada yang di sini. Dan hanya membuat model itu, ya. Rails menjana model e-mel pengguna: string kata laluan: string. Dan kemudian anda membuat pengawal yang memperkatakan pengguna. Dan anda boleh mencipta pengguna baru dan cara orang-orang jenis barang. Dan kemudian anda boleh bergerak untuk mewujudkan seluruh laman web anda. Sejuk, soalan? Ya. PENONTON: [didengar] GABRIEL Guimarães: Ya, ya, anda pasti perlu pergi ke paparan. Itu satu soalan yang sangat baik. Jadi pandangan adalah apa yang sebenarnya mengandungi HTML anda. Jadi ia adalah apa yang pengguna akan melihat. Sekali lagi, di sini, ini adalah satu contoh pandangan. Ia mempunyai kod HTML dan Ruby kod pada masa yang sama. Jadi kod Ruby yang ada untuk meletakkan perkara dari pangkalan data, sebagai contoh, yang dimuatkan di pengawal. Boleh berubah sehingga @ buku, sebagai contoh, mempunyai semua buku dan jadual buku di pangkalan data. Kami memastikan bahawa ia mempunyai dalam pengawal. Dan pandangan itu - setiap halaman dari laman web anda akan mempunyai satu paparan yang berkaitan. Jadi, jika anda pergi ke halaman rumah, yang halaman yang pertama, harvard2017.com. Yang menunjukkan satu halaman. Dan kemudian anda pergi untuk mengurangkan profil. Itu akan pergi ke pengawal itulah pengawal profil. Dan pengawal profil akan untuk memberikan anda paparan profil. Dan paparan profil akan kelihatan agak seperti ini, tetapi ia akan mempunyai maklumat mengenai pengguna, dan tidak mengenai buku-buku. Jadi ia kod HTML dan CSS dan orang-orang perkara-perkara yang pengguna melihat dengan kod Ruby - yang benar-benar mencetak perkara dari pangkalan data. Adakah itu lebih jelas? Saya berharap. PENONTON: Kod HTML digunakan untuk benar-benar membuat laman web yang yang pengguna melihat, tetapi kod Ruby adalah apa yang membuat kerja-kerja laman web? GABRIEL Guimarães: Kod Ruby mendapat ditukar kepada HTML. Jadi apa yang pengguna mendapat hanya HTML, OK? Ia hanya HTML. Book.title ini akan menukar kepada nilai book.title dalam HTML, OK. Jadi ini adalah semua dalam pelayan, dan sebagainya ini bergantung kepada apa yang buku-buku yang ada dalam pelayan sekarang. Tetapi apa yang pelayan akan segera rasa hanya kod HTML, OK. Tetapi pandangan itu hanya memberikan susun atur apa yang telah HTML akan kelihatan seperti dan apa pembolehubah akan menjadi. Ini jenis keluar cetak, OK. Perkara-perkara yang ada pada dasarnya mencetak out. Mereka akan mencetak pembolehubah, OK. Jadi apa yang hanya HTML, mereka - pengarang, tajuk, penerangan. Itu kandungan statik. Itu tidak akan berubah. Itulah kod HTML hanya biasa. Mereka adalah out cetak untuk pembolehubah - perkara-perkara yang bergantung. Sejuk, lebih banyak soalan? Baik? Ya. PENONTON: Saya rasa anda telah melakukan semua penyuntingan di dalam teks yang berbeza program penyuntingan. Sekiranya kita juga memuat turun itu? GABRIEL Guimarães: Ya, saya suka ini editor teks dipanggil TextMate. Dan ia benar-benar baik. Ia juga sesuai untuk Ruby. Ia warna perkara yang sangat kemas. Jadi TextMate, T-E-X-T. Saya akan meletakkan bahawa, berpegang - Maksud saya, anda boleh menggunakan gedit atau apa sahaja yang anda mahu. Tetapi ini adalah khusus untuk Mac, dan ini adalah benar-benar kemas kerana ia meletakkan semua fail anda di bawah sana. Dan di Ruby on Rails, anda perlu untuk menukar fail banyak. Jadi ia banyak, banyak fail hanya pergi dari satu fail, melompat ke satu fail atau yang lain. Jadi TextMate adalah satu yang sangat baik, tetapi terdapat banyak di luar sana. Lebih banyak soalan? OK, ya? PENONTON: Adakah terdapat pembangunan mudah alih melalui Ruby on Rails? GABRIEL Guimarães: saya telah mendengar perkara. Saya tidak menggunakan mereka. Anda boleh lebih banyak penyelidikan pada itu. Saya tidak pasti jika ada apa-apa perkara yang baik di luar sana. OK, ya? PENONTON: [didengar] GABRIEL Guimarães: Tidak Rails, mungkin Ruby pelbagai. Buka tetingkap terminal dan jenis, "Ruby". Ya, mungkin, dan kemudian anda hanya perlu memasang Rails. Tetapi jika anda akan memasang baru Rails 4.0, yang saya sangat mengesyorkan, anda perlu memuat turun Ruby 2.0. Itulah yang baru juga. Dan Rails baru 4.0 sesuatu benar-benar sejuk yang ia kepada aset. Ia mengendalikan aset. Aset lagi adalah imej, fail CSS, dan fail JavaScript. Jadi satu perkara benar-benar kemas yang Ruby on Rails tidak untuk anda adalah semua CSS mereka fail yang anda ada dan segala-galanya - ia hanya bundel segala-galanya ke dalam satu fail yang besar, tanpa ruang atau apa-apa, untuk mengurangkan masa yang pengguna perlu turun kod itu daripada pelayan anda. Oleh itu, apabila anda lihat dalam komputer anda, akan mempunyai seperti 15 jumlah gambar CSS. Atau banyak, banyak fail CSS yang berbeza. Tetapi pada akhir hari, apa Rails secara automatik tidak untuk anda adalah ia meletakkan semua bersama-sama ke dalam satu fail besar supaya ia mengurangkan masa permintaan itu. Itu benar-benar sejuk. Ya? PENONTON: [didengar] GABRIEL Guimarães: Tepat sekali. Jadi, integrasi Peta Google. Itu merupakan API JavaScript dari Google. Jadi saya hanya pergi ke laman web Google. Mereka mempunyai ini Peta Google API dan saya turun kod dan bersepadu ia ke dalam pandangan saya. Jadi apa yang saya perlu lakukan di sana adalah saya perlu mendapatkan lokasi dari pangkalan data. Yang telah dilakukan di pengawal. Jadi saya pergi ke pengawal - di mana adalah pengawal. Pengawal ini kelihatan seperti ini. Mendapat semua lokasi yang pelajar, meletakkan semua itu menjadi besar berubah-ubah, senarai besar, yang mempunyai semua lokasi. Dan dalam pandangan, kerana JavaScript API adalah sesuatu dalam melihat, bukan? Kerana JavaScript berjalan dalam HTML anda kod, ia akan dihantar ke mesin pengguna. Dan dalam pandangan, saya dimuatkan semua itu maklumat ke dalam API Google. Dan ia memang semua itu untuk saya, yang benar-benar sejuk. Tetapi jika anda mahu menggunakan yang ada di back-end, dan ia seperti perpustakaan untuk Sebagai contoh, sekali lagi - integrasi dengan Facebook. Itu sesuatu yang banyak, banyak, banyak aplikasi menggunakan pada masa kini. Jadi mempunyai integrasi dengan Facebook kerana ia lebih mudah untuk hanya log masuk dengan Facebook daripada untuk mewujudkan akaun dan blah, blah, blah. Kemudian anda hanya menggunakan permata dan ia sebagai mudah seperti pergi ke fail permata anda. Fail Gem adalah fail yang dipanggil fail permata di direktori sumber Ruby anda pada Rails projek. Hanya pergi ke sana dan menambah permata baru. Dan anda melihat ia di atas Google. Terdapat banyak, banyak, banyak permata. Ada satu yang khusus tidak ini untuk integrasi Facebook. Saya tidak pasti apa nama ia. Hanya Google ia dan anda akan menemuinya. OK, soalan lagi? Awesome, terima kasih kerana datang.