GABRIEL GUIMARAES: Este é CS50. Bem-vindo ao surpreendentes Web Apps com Ruby on Rails. Então, para quem está interessado em web de desenvolvimento e de fazer sites, web aplicações, Ruby on Rails é este ferramenta incrível que o Twitter, GitHub, Groupon, e todos os tipos de muito bom, e grande, aplicações web está usando em Nos últimos anos. E é uma muito, muito legal recurso, um instrumento legal, porque é novo. Por isso, tem toda a nova e poderosa tecnologias incorporada uma estrutura que ajuda a lidar com todos os tipos de coisas incríveis. Mas o que é um framework? Assim, uma estrutura é basicamente algo que cria - quando você começa um site, se você começou a partir do zero, como você abrir gedit lá, e você quer codificar tudo do seu HTML, eo código de todo o seu PHP, todo o seu CSS, tudo a partir do zero - que só vai ser um monte de trabalho. E um quadro literalmente dá-lhe metade do website já feito. Então, você começa com metade de um website que tem tudo o que há para você. Como as conexões de banco de dados, e todos os tipos de coisas que você tem que se preocupar E se você está fazendo isso a partir do zero, você não precisa se preocupar com os detalhes de baixo nível. Mas hoje vamos exportar uma das os sites que o calouro do classe de 2017 provavelmente estão familiarizados. Portanto, este site é o site que eu fez por nossa classe durante o verão. Era um site onde os estudantes de a classe de 2017 possam se logar e interagir uns com os outros. E então este é um mapa - todos, onde as pessoas estão. E nós tivemos um jogo livro, um jogo de músicas onde vimos canções das pessoas e livros das pessoas. O que eles gostam de ler, o que eles gostam de ouvir. E a parte mais interessante é que literalmente me levou três horas codificar tudo isso. Porque se eu tivesse que fazer tudo de zero, como se abrindo gedit, ele provavelmente teria tomado me 20, 30 horas. Mas com Ruby on Rails, porque tudo já foi criado por mim, ele só me deu três ou quatro horas, ou algo parecido. Então o que é Ruby on Rails. Ruby on Rails, mais uma vez, como já disse, é um quadro. Esta é uma imagem de um quadro. Então, você vai começar a construir uma casa, você já tem metade do casa feito. Esse é o quadro. E Ruby on Rails é exatamente assim. E você deve pensar nisso como, você começa um site, você começar o seu web aplicação, já temos metade do que fez lá. Mas antes de tudo, o que é Ruby? Ruby on Rails usa a vista do modelo controlador, que é paradigma, o qual é realmente interessante - e todas as aplicações nos dias de hoje usar algo como isso. Esta idéia de separar as coisas em três partes, o modelo, a vista, e o controlador. Vamos falar um pouco mais sobre isso mais tarde. Em primeiro lugar, o que é Ruby? Portanto, esta é Ruby. E este é o símbolo da linguagem chamada Ruby. Ruby é uma das newish_nms interpretados linguagens, assim roteiro. É uma linguagem que não é compilado como C. Ela é compilada em fuga. Então, isso é bom, porque, assim como PHP, por exemplo, também é interpretado, é não compilado. Isso é bom porque o seu portátil. Então você acabou de passar o seu código de uma máquina para outra. A partir de uma máquina Linux, para um Windows máquina, a uma máquina Mac ou Apple, ou algo parecido. E você não precisa se preocupar com detalhes sobre cada um dos específicos sistemas operacionais. Ele vai funcionar em todos os lugares. E Ruby é uma linguagem que - Vocês provavelmente se lembra disso. As pessoas usam a função hash implementada em C para a tabela hash na semana passada e tinha todos os tipos de falhas de segmentação. E então as coisas se preocupar se essa seqüência i lá, o i cadeia aqui, foi realmente minúsculas ou maiúscula, ou este tipo de preocupante detalhes de baixo nível. Bem, em Ruby, se você quiser implementar uma tabela hash, este é exatamente como você criar uma tabela hash. Você diz, dicionário, que é o nome da minha variável, = "Hash.new". E então dicionário ["foo"], e quando eu estou acrescentando foo à minha tabela hash, eu sou apenas dizendo foo está lá. E então se eu queria verificar se foo estava lá, eu acabei de dizer se dicionário ["foo"] == true return true. Whoa, e essa é a sua tabela de hash. Essa é a implementação de tabela hash em Ruby. Então, todo mundo queria que eles poderiam ter usado algo parecido com Ruby para último pset de semana, certo? Temos todos os tipos de razões para querer usar uma linguagem como Ruby. Ruby tem pedras preciosas. Gem é um nome para um tipo de biblioteca em Ruby. Assim, todos os tipos de recursos interessantes que você pode ter, por exemplo, se eu quer integrar minha aplicação. Esse pedido de Harvard 2017 foi integrado ao Facebook. Então, você poderia entrar, via Facebook, para o app. Então, se você vai fazer isso, você não precisa se preocupar com o envio de alguns Solicitação HTTP para o Facebook, e espera para a resposta, e forçando o resposta, e blá, blá, blá. Você acabou de fazer o download da jóia que faz tudo isso para você. E então você não precisa se preocupar com tudo isso. E depois de muita ajuda on-line, é claro. Há muitos, muitos, muitos sites que vai ajudá-lo tanto com Ruby e Rails com. E é muito divertido de código. Exatamente porque você pode parar de se preocupar sobre esses problemas não tão divertidas. Como se algo é ou minúsculas maiúsculas, em seguida, por que é isso dando-lhe uma falha de segmentação, e você pode realmente mergulhar no muito coisas interessantes. Para mergulhar nos problemas muito legal. Então Ruby é apenas como a C em um sentido. Portanto, não vai ser que de um grande salto na verdade. Então coloca, esse é o nosso aplicativo de impressão em Ruby. Eu acho que você poderia usar print também, mas coloca é o que todo mundo usa. Então, só coloca "Olá Mundo". Você poderia, ou você não poderia, ter o parêntese circundando "Olá Mundo" lá. Você só pode escolher se ou para não usar isso. E então x = "1". Um loop while parece muito muito mesmo. Ele só tem menos de sintaxe. É um tipo de produto de limpeza um pouco. E então, se x> 25 puts "Big!" e outra coisa coloca "Small ...". E é uma espécie de C nesse sentido. Então, se você olhar para isso, você pode abordagem provavelmente entender tudo o que está acontecendo. Mas é mais poderoso. Mais poderoso, porque, mais do que isso, Ele pode fazer coisas que não são - algum tipo de hackage um pouco. Em C você não poderia fazer em apenas fazer com uma linha. Por exemplo, coloca "Eu sou # {x}". Este é apenas sintaxe para colocar o valor de x aqui, e não imprimir o caráter x. Em C que tinha que fazer a porcentagem d, e em seguida, colocar-se a variável x após a vírgula aqui, ou algo parecido. E em Ruby há um atalho para apenas fazer isso. E coloca isso, se x> 3, então você pode colocar o se tudo em uma linha. E, em seguida, uma lista. Listas em C, como um array, você tem que acompanhar como o seu grande matriz é ou caso contrário você ter uma segmentação falha. Sua matriz é apenas um tipo. Portanto, é um array de carga ou uma matriz de números inteiros. Neste caso, eu criei uma lista aqui, que é uma matriz, que tem o primeiro elemento é uma string, John, e depois quatro, dois - esses são números inteiros. E então eu apenas adicionar, lista, o Esquerda Angle Bracket, Esquerda Angle Bracket, três. Isso significa que apenas anexar alguma coisa para minha lista. Então, é uma espécie de mais interessante porque se você quisesse usar isso como apenas uma simples lista de números inteiros, você poderia, totalmente. Isso é totalmente bom. Basta colocar inteiros lá. Mas se você quiser fazer algo que é mais atraente, que tem outro coisas, que tem - Eu não sei, todos os tipos de listas em lá, ou outros objetos que são mais interessante, você pode fazer isso totalmente. É totalmente bem. E então se você quiser para percorrer Na lista, você pode usar o mais tipo C-ish de abordagem. Isso é para loop, que você inicie uma variável, i = "1", ou i = "0". E então você vai, e interagir, e obter todos os elementos. Mas você também pode usar este abordagem mais Rubi-like. Isso é apenas como um list.each. Isso está apenas dizendo, me retornar todos os elementos da lista. E fazer com cada elemento, chamá-los de elem. Portanto, este é apenas um nome que eu sou dando a cada elemento. E agora isso vai repetir para todos os elementos, e elem, vai ser o caminho que temos acesso que um único elemento. Então, você poderia totalmente manter o Abordagem C, mas isso funciona também. E é exatamente a mesma coisa, OK. E para além disso, é realmente, realmente fácil de integrar Ruby e HTML já que vocês estão interessados em aplicações web. HTML é definitivamente algo que você vai usar muito. E aqui, se você quiser colocar o Ruby em HTML, basta começar aqui, <%. Isso significa que, aqui começa o Ruby. E então%>, como forma de PHP nesse sentido. Aqui termina o Ruby e, em seguida, você pode basta colocar o seu caso aqui. E então eu tenho alguma variável user.logged_in. Em Ruby, que normalmente adicionar aqueles, seja ponto de interrogação ou de exclamação marca, como um personagem de banco, apenas para o tipo de distinguir entre as funções. Mas você acabou de colocar que para o seu próprio bem. Não é algo que muda nada na funcionalidade. Então, só para me lembrar que este é um função - e as funções em Ruby, em vez de C, como eu já disse, eles não precisam dos parênteses. Assim que logado coisa, isso é uma função, que é um método. Mas você não precisa explicitamente colocar os parênteses lá. Então, basta perguntar se o usuário de logado, e se o usuário de logado, agora HTML começa novamente. Então, bem-vindo, e aqui Eu imprimi o user.name. E é isso. Então, isso é bastante simples, como a integrar o Ruby com o seu HTML. E os recursos, como eu disse, existem todos os tipos de recursos para Ruby. Vocês podem olhar isso depois porque tanto o vídeo, e slides, vão estar disponível online. E agora vamos entrar em Rails. Rails é o amor. Trilhos - assim Ruby é sua linguagem. OK, assim como PHP, assim como Python. É uma linguagem de alto nível, não como C. Um meio, linguagem de baixo nível de C em sentido de que Ruby que você não tem que preocupar com a realocação de memória e ponteiros, e esses tipos de coisas. Mas Rails é este programa que foi escrito em Ruby. E utiliza Ruby, a fim de ter esta quadro, para que você seja capaz de construir aplicações web impressionante. Então você tem que instalar primeiro o Ruby on sua máquina, mas a maioria das máquinas já tem isso. E, em seguida, instalar os trilhos em cima dela. Nós vamos falar sobre isso mais tarde. E por que Rails? Então, MVC, que é o controlador de vista do modelo falamos um pouco bit, torna tudo mais simples porque divide as coisas que são conceitualmente diferentes em diferentes partes de sua aplicação. Menos tempo gasto em problemas de baixo nível, novamente, e muito, muito popular agora. Então, para todos aqueles que estão interessados ​​em o arranque de cena, ou em alguma coisa como iniciar negócios, e as pessoas no mercado de tecnologia, que são começar seu próprio negócio agora são muito, muito fãs de Ruby on Rails porque é muito rápido. Então você pode obter algo em funcionamento em menos de um dia, e isso é realmente um muito atraente argumento para usar Ruby. E Rails 4.0 - é muito fresco do forno agora. Então, Rails 4.0 - Eu acho que a primeira versão foi em março deste ano. E é muito bom, tem tudo os tipos de novos recursos, cool. Então Ruby on Rails é um framework que é sendo constantemente atualizado para ter tudo da nova tecnologia. A primeira vez que eu tentei usar Ruby on Rails, eu tinha esse problema, porque eu criei minha primeira aplicação web, e parecia exatamente assim. Então ele cria todos esses arquivos para você, e eu não tinha idéia do que - o que é isso? Ele criou todos esses arquivos, e eu só queria criar um programa simples, uma site HTML simples. E eu não podia mesmo fazer nada. Então, eu estava um pouco sobrecarregado. Mas isso é uma das coisas que uma vez que você entendê-la, tudo se torna tão muito mais clara. Portanto, não se desanime com o primeiro de vista o que você cria em primeiro lugar. Então o que acontece é o Rails cria todos os arquivos. Assim, um dos que é doc, documentação. Db, que está relacionado com o banco de dados. Lib, que é log bibliotecas. Pública, roteiro, e algumas coisas. Praticamente tudo que você vai se preocupar é sobre a pasta de aplicativos, lá em cima. Essa é a pasta que contém sua aplicação. Todos os outros arquivos - alguns deles são importantes, e você está vai aprender sobre isso mais tarde. Mas eles estão aqui apenas para conter o quadro. Assim, a primeira pedra angular da casa vocês estão construindo, OK? Mas a pasta app - isso é o que realmente importante. E a pasta app tem ativos. Ativo é tudo muito bonito que está por vir. Imagens por exemplo, tudo o que é estática que vai ser baixado para o seu site. Assim, imagens, JavaScript, CSS - esses tipos de coisas são ativos. Controladores - vamos falar mais sobre quais são os controladores, modelos, e campos em um segundo. E ajudantes são funções que você pode usar todo o seu código para ajudá-lo a fazer alguma coisa. Funções como logado, para exemplo - user.loggedin. Isso é uma função que provavelmente você tem que usar em todas as partes do seu aplicação. Assim, você pode colocar algo como que em sua ajudante. Utentes - isso é se você estiver indo para enviar um e-mail para os usuários, você quer usar uma mala direta. E os modelos e pontos de vista, vamos para falar sobre isso agora. Assim, o controlador de vista do modelo, que é a pedra angular básico de Ruby on Rails, ea maioria dos enquadramentos hoje em dia, para ser honesto. Então, novamente, nós separamos todo o nosso código em três partes diferentes. O modelo - o modelo é, basicamente, a base de dados. Ele lida com as coisas na base de dados. Assim, cada tabela no banco de dados tem um arquivo correspondente dentro do modelo. Então, é uma espécie de mesa para seus usuários. Então, você está armazenando informações como o nome de usuário, seus e-mails, seu endereço, sua senha, e coisas assim. Você vai ter um arquivo em o modelo chamado rb usuário - rb para Ruby. E lá você vai ter tudo dos métodos e das variáveis. As variáveis ​​estão indo para corresponder para o nome do usuário, e-mail, e tudo. E você vai ter os métodos. Isso vai ser algo a respeito - você está indo para lidar com esta informação na base de dados. Para criar um modelo com Rails, você acabou de usar Rails gerar. E para criar as coisas em Rails, você realmente precisa do terminal. Portanto, é um muito de terminal framework baseado. Você acabou de fazer login no terminal, e não Rails, gerar modelo. E o nome do modelo é usuário. E eu só quero ter duas variáveis, duas colunas, em minha mesa. Então, isso é e-mail. E-mail é um tipo string. Senha, a senha é também um tipo string. Essas são as duas únicas coisas. É uma espécie de uma tabela do usuário simplista. Mas você poderia totalmente colocar uma centena coisa está lá, se você quisesse. E Rails também torna muito, muito simples para ter tudo tipos de relações banco de dados. Por isso, normalmente, quando você tem tabelas em seu banco de dados, eles não são muito independentes uma da outra. Vamos pensar. Você quer comprar e vender produtos online. OK, então você tem um site onde você quer comprar e vender produtos. Assim, cada usuário tem muitos produtos que este usuário está disposto a vender. E cada usuário também tem muitas transações que estão em curso, ou algo parecido. E as transações são com outro usuário. Cada transação pertence para dois usuários diferentes. O usuário que está comprando e o usuário que está vendendo. Então esses são os chamados relações de banco de dados. E aqui nós temos exatamente essas palavras-chave, tem muitas e pertence. Essas são as mais importantes. E você está indo só para dizer, por exemplo, este é o exemplo de um modelo em 2017 o site da Harvard. Mais uma vez, os alunos aqui - cada aluno no site, estudante é um modelo, é uma tabela de banco de dados. Cada aluno tinha muitos livros, porque você poderia dizer, quais são seus favoritos livros, certo. Assim, cada livro pertence a um estudante aqui. E atribuem acessível - que está apenas dizendo, aqueles são as variáveis. Essas são as variáveis ​​acessíveis a partir deste modelo. E as variáveis ​​são o autor de o livro, descrição, gênero e título do livro. Assim, apenas as informações acerca do livro. E aqui eu tenho um método que simplesmente ordena tudo. Assim, definir e termina aqui, que é apenas dizendo, aí vem o meu método. Self.sorted_all. Isso é só, dá-me tudo resolvido, e é assim que você implementa o algoritmo de classificação, que é bastante fácil. Mas, basicamente, é assim um modelo parece, OK. Alguém tem dúvidas sobre essa coisa de banco de dados? Relações? Isso está claro? Sim. AUDIÊNCIA: Você pode fazer o algoritmo de ordenação? GABRIEL GUIMARAES: O algoritmo de ordenação, OK. Quando você se acostumar com a sintaxe Ruby, isso vai ficar claro. Mas, basicamente, é elems Book.all. Então livro é o nome do meu modelo. Quando você cria um modelo, ele vem com todos os tipos de métodos agradáveis ​​para você. Assim dot.all é um método que retorna todos os livros. Mas encontrar, por exemplo, iria procurar um livro e devolver o livro, ou algo parecido. E assim elems é tudo. E eu só estou dizendo elems.sort. Classificar é uma função built-in Ruby. E, fazer ab. Portanto, este não é outra vez - você está indo para classificar. Mas você vai conseguir este argumento para mim. E o argumento utiliza - este é um dos as coisas mais difíceis em Ruby, na verdade, fazei isto coisa. Mas uma vez que você entende tudo vem muito, muito intuitiva. Assim, o ab, este está dizendo que o lugar titulares que eu vou usar - como as variáveis ​​que eu vou usar, são vai ser chamado a e b. E esses são os livros. Então, por causa espécie precisa comparar elementos, se lembra disso? Então, quando você resolver as coisas, você comparar dois elementos. Eu vou dizer que cada vez você está indo para comparar - por isso esta é, eu estou passando para classificar um argumento. E o argumento é tudo de fazer para e aqui, OK? E esse argumento, é apenas dizer tipo como comparar. Ordenar iria trabalhar aqui, mas seria comparar com a sua padrão comparando algoritmo. Eu quero-o para comparar de uma forma muito específica maneira, ou seja, quando o livro Foi criado, quando cada livro foi criado. Então, eu estou dizendo, diga o nome do primeiro livro é um e o nome do segundo livro como b, quero classificação para classificar algo baseado em b.created_at esta símbolo estranho, a.created_at. E esse símbolo estranho é uma abreviação pois se um é maior do que o outros, retorno 1. Se for igual ao outros, retorno zero. Se é menor do que o outro, o retorno menos 1. Então é isso que esse símbolo estranho é. Mas isso não é importante. Quero dizer, o que eu quero que vocês chegar agora é a idéia de que a base de dados - você pode ter o modelo de lá. Assim você não precisa se preocupar com conectar e utilizar instrução SQL, e coisas assim. Ele também pode criar portas para Injeção de SQL e tudo os tipos de problemas de segurança. Neste caso, você não preocupar com isso. Você acabou de usar métodos como book.all. E que, no fundo, é claro, está indo para o seu banco de dados, e é vai usar uma instrução SQL para obter todos os livros. Mas você não tem que preocupar com isso. Esse é o takeaway, OK? E quando você tem uma declaração belongs_to assim, o que significa que uma vez que você tem um objeto livro, você pode ver o que é o seu aluno. Então, qual aluno tem este livro? Assim, podemos usar apenas book.student e que lhe dá o que o aluno está. E isso é uma característica realmente ter. OK, agora a vista. Assim, o modelo é o que interage com o banco de dados, certo? A vista é basicamente HTML, e CSS, e algum JavaScript. E isso é o que o usuário realmente vê. O usuário não vai ver o seu banco de dados. Ele vai ver alguns dados do banco de dados embutido no espectador. Ruby on Rails torna realmente simples de fazer campos. Primeiro, porque ele já cria para você, fora da caixa, um layout. A disposição é, basicamente, algo que - se todas as suas páginas tem um logotipo no topo e, eu não sei, algum menu ou algo assim, que todas as suas páginas têm em comum, então você não fazer precisa criar muitos, muitos, muitos HTML arquivos onde todos os arquivos têm que mesmo código HTML. Quero dizer que é mudo, porque você está apenas repetindo código entre arquivos diferentes. Isso definitivamente não é uma boa abordagem. Então Ruby on Rails cria este layout para você. E este é apenas dizer, todas as minhas páginas vão ter este HTML, esta cabeça título aqui, e esses são estilo tag link folha. Ligue aqui todo o meu CSS. Ligue aqui toda a minha JavaScript e algumas meta tags. Isso é apenas algo que eles fazer automaticamente para você. E, em seguida, acabar com a cabeça, agora aqui começa o corpo. E agora esta é a minha conteúdo real. Então, se eu queria colocar algo como um menu aqui, eu iria colocá-lo direito sobre este lugar, ou algo parecido, de modo que todas as minhas páginas compartilhadas-lo. Assim, o layout é compartilhada por todas as páginas. Agora que o rendimento aqui só diz, não importa o que as páginas isto é, basta conecte o conteúdo dessa página aqui, OK? E agora este é, por exemplo, o conteúdo de uma página que vai ser conectados a essa declaração de rendimento automaticamente pelo Rails. Mas este é um layout compartilhado por todas as páginas. E este é um exemplo de uma página. E esta é exatamente a página que lista todos os livros. Portanto, esta é uma tabela HTML básico em cima. Então, listando livros, um título, autor, descrição, gênero. E aqui nós usamos, mais uma vez, alguns Sintaxe Ruby, @ books.each-- @ Tipo de diz que a variável é global em um sentido. Como esta variável foi de fato declarados no controlador que você vai ver agora. Mas basta dar como certo que esta @ Livros é uma variável que é uma lista de todos os livros. Então books.each, não, e novamente, este é apenas dizendo como você deseja nomear cada um dos iteradores para que nós não precisa se preocupar com um quatro, int i blá, blá, blá. Acabamos de tomar cada um dos elementos e usá-los. Portanto, este é o livro, e depois é só imprimir aqui. book.title, book.author, book.description, e blá, blá, blá. E aqui está uma link_to. Então link_to é apenas uma tag link que um usuário pode clicar e vai para outro site. Link_to, mostrar que o livro particular. Portanto, se o usuário está muito interessado em Neste livro, então ele pode clicar no show. Ou clique em editar, se ele quiser para editar o livro. Ou destruir, se ele quer excluir o livro a partir do banco de dados. OK, isso faz sentido? Boa. Finalmente, o controlador. Então, basicamente, o controlador é a interface entre o modelo ea vista. Assim, o modelo é a parte do seu código que tem banco de dados - cada tabela no banco de dados tem um arquivo no respectivo modelo, e assim por diante. E como o modelo e o ponto de vista interagem? Assim, por meio do controlador. O que um controlador faz é que é o modelo para algo como, por exemplo, colocar todo o livro dentro de uma variável. Como este, @ livros. E ele precisa ser global, com esta a coisa, porque ele vai ser acessados ​​pelo ponto de vista. Ele não vai ser usado dentro o próprio controlador. E isso só retarda informações que a visão vai usar. Por exemplo, o controlador verifica se o usuário está online. E como ele faz isso? Ele realmente pede o modelo porque o modelo tem o informações sobre o usuário. Tem uma mesa de utilizadores, os livros mesa, outras tabelas. Assim, o controlador pergunta se o usuário está online. Se o usuário estiver on-line, o controlador lida com coisas como colocar um cookie, ou algo assim, para colocar o carimbo quer dizer que o usuário está online. Não há necessidade de login novamente. E ele vai carregar uma variável chamada utilizador, por exemplo, que o vista pode usar. E a vista pode colocar alguma coisa aqui, por exemplo, bem-vindo user.name. Então, ele vai dizer: bem-vindo João, bem-vindo James - algo assim, certo? Então, todas essas variáveis ​​utilizadas na vista vai ser carregado no controlador e vão ser puxado para cima a partir do modelo. Este é o exemplo de um controlador. Portanto, temos, basicamente, cada um - chamamos essas ações as coisas. Assim, o índice é uma ação. É uma função Ruby. É um método Ruby in lá. Mas, para as chamadas de controladores essas ações coisas. E cada ação está relacionada a uma rota. Então aqui esta rota, por exemplo, é uma instrução Get / books. Então, se você vai para harvard2017.com/books, o que vai acontecer é esse código é vai ser chamado. E não há um arquivo - deixe-me abrir este rapidinho. Há um arquivo chamado arquivo raw. Não está abrindo. Portanto, há um arquivo chamado arquivo raw que, basicamente, corresponde - oh, agora está abrindo. Aqui, rotas. Então, basicamente, corresponde a uma tensão, ativação / new por exemplo, para algo no controlador. Então há esse controlador chamado controlador de ativação, mas aqui, temos os livros, por exemplo. Assim, corresponde - Livros / novo, para o controlador livros, a ação nova. Então, basicamente, muito simples coisas. E aqui, se você tivesse que ficar / livros, reduzir o ID dos livros, barra nova, você está indo para ir a esse Método Rubi lá em baixo. Então, aqui, que esse índice está fazendo é só carregar log book. Isso é algo que - Eu log todos os livros em um log. E resolver tudo. Então, isso vai voltar todos os livros ordenados. Isto é, de novo, na base de dados. Portanto, este é um método de o modelo. Você viu este método ser criados no modelo. Agora, esta é apenas carregar todos os livros e colocar isso em uma variável que pode ser visto pela visão. Porque você não pode, no meio da seu código HTML, você não pode chamar algo diretamente do modelo, porque, por duas razões. Em primeiro lugar, por razões de segurança, porque não é realmente interessante para ser carregar informações diretamente dentro cada HTML que está no banco de dados. E segundo, para manter a sua código realmente organizado. Assim, separar exactamente o diferentes partes. Assim BookLog.sorted_all, isto no banco de dados e isso vai colocar em uma variável @ livros. E agora esta variável é acessível dentro de seu código HTML. Assim, você pode simplesmente colocar todos os livros lá apenas como fizemos, aqui. Esta é a variável. E visitas respond_to fazer | formato |, esta é apenas uma espécie de sintaxe Ruby para se o usuário está me pedindo Código HTML, eu vou responder com código HTML. Se o usuário pergunta-me com código JSON, que é algo que os aplicativos da web usam para se comunicar entre si, eles geralmente usam JSON ou alguma outra tipo de coisa. Então ele só responde usando os dois formatos diferentes. Mas para um usuário normal, este não precisaria estar aqui. Você só iria responder com HTML, e isso é bom. Então, realmente não se preocupe que muito sobre isso. Esta é a única linha de código em nosso controle, como é o carregamento do HTML banco de dados, colocando em algo que é acessível por a vista. E, em seguida, novo, então aqui Estou criando livros. Mas para criar livros, eu preciso de um estudante porque eu preciso saber o aluno cujos livros este pertence, certo. Então @ aluno = Aluno. Student, mais uma vez, estamos começando com um grande S é o aluno modelo. OK, então isso é o aluno modelo, este é o log do livro modelo. Student.find, por isso estou indo para encontrar uma aluno usando a identificação de parâmetros. params.id, isso é só pegar o valor me deste ID que foi passado - ea URL. Basta ir a procurar aquele aluno. E em primeiro lugar, vamos verificar se o aluno tem algumas músicas e blá, blá, blá. E este já manipula o caso em que o estudante Não existe, por exemplo. E, em seguida, outra coisa, nós apenas responder para a mesma coisa usando HTML. E então podemos permitir que o usuário criar suas canções. Então, isso é novo. Novo é geralmente usado para, vamos o usuário criar algo. E depois há a ação de criar que geralmente é usado para - realmente colocar as músicas no banco de dados ou algo parecido. Mas uma vez que você começar a usar Rails, essas coisas vão ser muito, muito mais clara. OK, esfriar. Todas as perguntas até agora? Será que faz sentido com os controladores, modelos, campos - É mesmo? Mais uma vez em sua aplicação Rails - então tudo isso pode ser encontrado aqui. Então você tem aplicativo, os controladores, os são todos os meus controladores. Assim, por exemplo, livros de controlar. Isso é o que nós acabamos de ver. E então vistas. E cada controlador tem uma visão associada, certo? Então automaticamente quando você chama isso índice aqui, por exemplo, ou quando você chamar isso de livros novos, então o ponto de vista, livros, novo vai ser chamado. Então Rails faz tudo automaticamente para você. Assim, cada controlador tem uma associada e visualizar todos os modelos - aqui eu tenho um, dois, três, quatro, cinco modelos. Mas este é um modelo de estudante, para aqueles são as variáveis ​​que todo o alunos têm - localização, data de nascimento. Os alunos é um pouco mais complicado, porque cada aluno tem mais método diferente associado a ele. Mas este é apenas lidar com o tabela que tinha todo o alunos no banco de dados. E, OK, a instalação de Rails. Instalando o Rails, para ser honesto, não é a coisa mais simples. Mas uma vez que você passar por tudo, é muito, muito fácil. Assim, a instalação Rails, é só ir ao site, rubyandrails.org / Download e seguir as suas instruções. Baixar tudo. E você pode fazer isso também em Appliance, no CS50 Appliance, em Janelas, em Mac, ou qualquer operação sistema de sua escolha. Ruby on Rails é executado em tudo. As probabilidades são que você já instalou o Ruby se você tem um Mac ou - nos aparelhos Acho que Ruby é - Não tenho a certeza. E então você só tem esse software instalado. E se você quiser criar um novo aplicação web, você só fazer Rails, novo, do blog. Rails, novos - Eu não sei - o nome do seu site. E é tão simples. Vai criar todos aqueles arquivos que acabei de mostrar. Mas o modelo, a vista, ea controlador não vão ser povoada ainda. Você só vai ter que ir lá e preencher essas três pastas. Assim, as probabilidades são, você quer criar um modelo, por exemplo, implementar um primeiro modelo. Então, novamente, sempre tentando morder menor bits de um problema de cada vez. E então, vamos dizer, criar um modelo para os seus usuários. Essa é a primeira coisa se você tiver usuários. Então, eu quero criar um modelo assim como nós mostramos aqui. Rails, gerar, modelo, o usuário, em seguida, e-mails string - nós temos isso aqui. E justamente criar esse modelo, sim. Rails gerar modelo de e-mail do usuário: string senha: string. E então você cria um controlador que lida com o usuário. E você pode criar novos usuários e fazer esses tipos de coisas. E então você pode passar para a criação de o resto do seu site. Cool, perguntas? Sim. AUDIÊNCIA: [inaudível] GABRIEL GUIMARAES: Sim, sim, você definitivamente tem que ir para a vista. Essa é uma pergunta muito boa. Assim, a visão é o que realmente contém o HTML. Por isso, é o que os usuários vamos ver. Novamente, aqui, esta é uma exemplo de um ponto de vista. Tem código HTML e Ruby de código, ao mesmo tempo. Assim, o código Ruby está lá para colocar as coisas a partir da base de dados, por exemplo, que foram carregados no controlador. Assim que a variável @ livros, por exemplo, tem todos os livros ea tabela livros no banco de dados. Temos a certeza de que tinha no controlador. E a vista - cada uma das páginas fora de seu site é vai ter uma visão associada. Então, se você ir para a página inicial, a primeira página, harvard2017.com. Isso mostra uma página. E então você vai cortar perfil. Isso está indo para ir para um controlador que é um controlador de perfil. E o controlador perfil vai para dar-lhe a vista de perfil. E a vista de perfil vai ficar um pouco como isso, mas ele vai ter informações sobre o usuário, e não sobre os livros. Portanto, é de código HTML e CSS e aqueles coisas que um usuário vê com o código Ruby - que realmente imprime coisas a partir da base de dados. Isso é mais claro? Espero. AUDIÊNCIA: O código HTML é usado para realmente fazer o site que o usuário vê, mas o código Ruby é o que torna o trabalho site? GABRIEL GUIMARAES: O código Ruby é convertido em HTML. Então, o que o usuário recebe é só HTML, OK? É apenas HTML. Este book.title vai converter-se ao o valor de book.title em HTML, OK. Então isso é tudo no servidor, e assim por isso depende do que os livros estão lá no servidor no momento. Mas o que o servidor faria imediatamente sentido é apenas o código HTML, OK. Mas a visão apenas dá o layout o que o HTML foi indo olhar como e que as variáveis vão ser. Este tipo de saída de impressão, OK. Essas coisas existem basicamente imprimir outs. Eles estão indo para imprimir variáveis, OK. Então, o que é apenas HTML, aqueles - autor, título, descrição. Isso é conteúdo estático. Isso não vai mudar. Isso é código HTML simplesmente. Essas são as impressões para as variáveis ​​- coisas que dependem. Cool, mais perguntas? Bom? Sim. AUDIÊNCIA: Eu acho que você estava fazendo tudo a edição de um texto diferente programa de edição. Devemos também fazer download de que? GABRIEL GUIMARAES: Sim, eu gosto disso editor de texto chamado TextMate. E é muito bom. É bem adequado para Ruby. Ele cores coisas muito ordenadamente. Então, TextMate, T-E-X-T. Vou colocar isso, espera - Quer dizer que você pode usar o gedit ou qualquer coisa que você quiser. Mas este é específico para Mac, e isso é muito legal porque coloca todos seus arquivos lá em baixo. E em Ruby on Rails, você precisa para trocar arquivos muito. Por isso, é muitos, muitos arquivos apenas ir de um arquivo, pule para um arquivo ou outro. Então TextMate é muito bom, mas há muitos por aí. Mais perguntas? OK, não é? AUDIÊNCIA: Existe um desenvolvimento móvel através de Ruby on Rails? GABRIEL GUIMARAES: Eu tenho ouviu falar de coisas. Eu não usei eles. Você pode pesquisar mais sobre isso. Eu não tenho certeza se há alguma coisa boa por aí. OK, não é? AUDIÊNCIA: [inaudível] GABRIEL Guimarães: Não Rails, provavelmente variedade Ruby. Abra uma janela de terminal e tipo, "Ruby". Sim, provavelmente, e então você só precisa instalar Rails. Mas se você está indo para instalar a nova Rails 4.0, que eu recomendo, você deve baixar o Ruby 2.0. Esse é o novo também. E os novos Rails 4.0 tem algo muito legal que ele faz para os ativos. Ele lida com os ativos. Ativos novamente são imagens, arquivos CSS, e arquivos JavaScript. Então, uma coisa muito legal que Ruby on O Rails para você é todos aqueles CSS arquivos que você tem e tudo - ele simplesmente empacota tudo para cima em um enorme arquivo, sem espaços ou qualquer coisa, para minimizar o tempo que o usuário precisa baixar o código do seu servidor. Então, quando você vê no seu computador, é vai ter uns 15 arquivos CSS. Ou muitos, muitos arquivos CSS diferentes. Contudo, no final do dia, o que Trilhos automaticamente faz para você é que coloca tudo junto em um arquivo enorme de modo que minimiza o tempo pedido. Isso é muito legal. Sim? AUDIÊNCIA: [inaudível] GABRIEL GUIMARAES: Exatamente. Assim, a integração do Google Maps. Essa é uma API JavaScript do Google. Então, eu só fui para o site do Google. Eles têm essa API do Google Maps e eu download do código e integrou- no meu ponto de vista. Então, o que eu precisava fazer lá é que eu precisava para obter a locais do banco de dados. Isso foi feito no controlador. Então eu fui para o controlador - onde está o controlador. O controlador ficou assim. Tenho todos os locais do alunos, colocar tudo isso em um grande variável, uma lista grande, que tem todos os locais. E no ponto de vista, porque o JavaScript API é algo no ver, certo? Porque JavaScript é executado dentro de seu HTML código, que vai ser enviado para máquina do usuário. E no ponto de vista, eu carreguei tudo isso informações para o API do Google. E ele fez tudo isso para me, o que é muito legal. Mas se você quiser usar as coisas no back-end, e é como uma biblioteca, para exemplo, mais uma vez - a integração com o Facebook. Isso é algo que muitos, muitos, muitos aplicativos estão usando hoje em dia. Então, tem sua integração com o Facebook porque é muito mais fácil de apenas Entrar com o Facebook do que para criar uma conta e blá, blá, blá. Então você acabou de usar uma jóia e é tão simples como ir ao seu arquivo de jóia. Gem arquivo é um arquivo chamado arquivo de jóia em o diretório de origem do seu Ruby on Rails projeto. Basta ir lá e adicionar nova jóia. E você procurar no Google. Há muitas, muitas, muitas pedras preciosas. Há um que especificamente faz esta para a integração Facebook. Eu não tenho certeza qual é o nome dele. Apenas Google e você está vai encontrá-lo. OK, mais perguntas? Impressionante, muito obrigado por terem vindo.