<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jackson Alves</title>
    <description>The latest articles on DEV Community by Jackson Alves (@jackson541).</description>
    <link>https://dev.to/jackson541</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F469023%2F0e060341-2034-4c33-b46b-fe40908266fd.jpeg</url>
      <title>DEV Community: Jackson Alves</title>
      <link>https://dev.to/jackson541</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jackson541"/>
    <language>en</language>
    <item>
      <title>CRUD em Ruby on Rails</title>
      <dc:creator>Jackson Alves</dc:creator>
      <pubDate>Thu, 01 Oct 2020 22:44:06 +0000</pubDate>
      <link>https://dev.to/jackson541/crud-em-ruby-on-rails-4io4</link>
      <guid>https://dev.to/jackson541/crud-em-ruby-on-rails-4io4</guid>
      <description>&lt;p&gt;Olá, dev! Hoje estaremos dando continuidade ao projeto de lista de tarefas que iniciamos no &lt;a href="https://dev.to/jackson541/criando-um-projeto-em-ruby-on-rails-3bhd"&gt;último post&lt;/a&gt;, dessa vez fazendo o famoso CRUD (Create, Read, Update, Delete) da nossa aplicação.&lt;/p&gt;

&lt;p&gt;Se você caiu aqui de paraquedas, não se preocupe! Basta já ter um projeto criado em Rails, ou ver o &lt;a href="https://dev.to/jackson541/criando-um-projeto-em-ruby-on-rails-3bhd"&gt;primeiro post&lt;/a&gt; para criar um, que já poderá continuar.&lt;/p&gt;

&lt;p&gt;Caso fique com dúvida sobre como fazer algo durante a explicação, pode acessar &lt;a href="https://github.com/jackson541/artigos-rails/tree/master/CRUD-parte-1" rel="noopener noreferrer"&gt;esse repositório&lt;/a&gt; que contém todo o código desenvolvido nesse artigo.&lt;/p&gt;

&lt;p&gt;Está pronto!? Então abra o editor, rode o projeto e prepare o café!&lt;/p&gt;

&lt;p&gt;Para ir até a página inicial do site, execute o comando na página do projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E acesse a url &lt;code&gt;http://localhost:3000&lt;/code&gt; Se tudo ocorreu bem, você deve encontrar uma página como essa:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxr5m74t6akzemk7tg6xt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxr5m74t6akzemk7tg6xt.png" alt="imagem inicial rails"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bom, agora já podemos começar a codar de verdade! Primeiro, temos que criar um Controller para a nossa aplicação, neste caso irei criar um para as listas. Lembre-se que os Controllers são responsáveis por intermediar a comunicação entre a View e a Model no model MVC e também pelas regras de negócio da aplicação.&lt;/p&gt;

&lt;p&gt;Rode o seguinte comando para criar um controller:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails generate controller Listas index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repare que &lt;code&gt;rails generate controller&lt;/code&gt; é o comando padrão para criação de um controller, &lt;code&gt;Listas&lt;/code&gt; é seu o nome e &lt;code&gt;index&lt;/code&gt; é o método que virá criado dentro dele. Esse último parâmetro, o do método, é opcional, mas ele nos dá algumas vantagens quando preenchido:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cria um arquivo nomeado &lt;code&gt;index.html.erb&lt;/code&gt;, dentro da pasta &lt;code&gt;/app/views/listas/&lt;/code&gt;, que nos servirá para criar o html desse método index;&lt;/li&gt;
&lt;li&gt;cria a rota &lt;code&gt;/listas/index&lt;/code&gt; com o método GET para a nossa aplicação, a declaração dessa rota pode ser vista dentro do arquivo &lt;code&gt;/config/routes.rb&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Que tal já começar a escrever algo na tela? Vá até o arquivo &lt;code&gt;index.html.erb&lt;/code&gt; que comentei e troque o seu conteúdo para&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Aqui ficarão as nossas listas&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E basta salvar as alterações e acessar a rota &lt;code&gt;http://localhost:3000/listas/index&lt;/code&gt; que irá encontrar uma página como essa:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvfrc4qoye918i7qavp8n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvfrc4qoye918i7qavp8n.png" alt="página inicial listas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excelente, já conseguimos imprimir algo em nosso site! Mas antes de continuarmos, preciso falar sobre algumas dúvidas que você possa estar tendo:&lt;/p&gt;
&lt;h4&gt;
  
  
  Porque o arquivo html do index termina com &lt;code&gt;.erb&lt;/code&gt;?
&lt;/h4&gt;

&lt;p&gt;ERB é um sistema do próprio Ruby que nos permite utilizar códigos dessa linguagem dentro do HTML, sem essa extensão não será possível utilizar código Ruby dentro dos arquivos. Veremos mais sobre isso mais a frente.&lt;/p&gt;
&lt;h4&gt;
  
  
  Como ele sabe qual arquivo html chamar?
&lt;/h4&gt;

&lt;p&gt;Como ainda não tem nenhum códido dentro do método index no listas_controller.rb, então o Rails presume que ele deve renderizar a view que comece o mesmo nome do método, nesse caso &lt;code&gt;index&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Como funciona a declaração das rotas?
&lt;/h4&gt;

&lt;p&gt;Todas as rotas são declaradas dentro do arquivo routes.rb que está na pasta config. Em geral, basta colocar o nome do método seguido da sua url, como podemos ver em &lt;code&gt;get 'listas/index'&lt;/code&gt;, em declarações simples como essa o Rails já presume que essa url deve chamar o método &lt;code&gt;index&lt;/code&gt; do controller &lt;code&gt;listas&lt;/code&gt;. No entanto, podemos definir qual método o Rails irá chamar com uma rota por meio do parâmetro &lt;code&gt;to&lt;/code&gt;, exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get 'listas/minhaslistas', to: 'listas#index'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse caso, o Rails irá chamar o método index do controller listas quando a url &lt;code&gt;http://localhost:3000/listas/minhaslistas&lt;/code&gt; for acessada.&lt;/p&gt;

&lt;h4&gt;
  
  
  Posso colocar esse arquivo html para a rota raiz do site &lt;code&gt;/&lt;/code&gt;?
&lt;/h4&gt;

&lt;p&gt;Sim, isso é realmente fácil! Vá até o arquivo &lt;code&gt;routes.rb&lt;/code&gt; e digite&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root 'controller#metodo'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No nosso caso estarei trocando o controller e o método por&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root 'listas#index'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, se você acessar &lt;code&gt;http://localhost:3000&lt;/code&gt; verá que a página do método index também está sendo renderizada na rota raiz. Lembrando que isso serve para qualquer controller que você tiver criado!&lt;/p&gt;

&lt;p&gt;E então, ficou com mais alguma dúvida? Ficarei feliz em te responder se deixar elas lá nos comentários!&lt;/p&gt;

&lt;h3&gt;
  
  
  Criando as rotas
&lt;/h3&gt;

&lt;p&gt;Já sabemos como é fácil criar novos controllers, então precisamos ver bem como criar rotas para acessá-los. Anteriormente, falei que as rotas podem ser definidas utilizando o método de requisição e um comando para apontar o seu controller, porém, o Rails fornece algo que facilita muito a nossa vida quando se trata de rotas ligadas ao CRUD: podemos, com um único comando, definir todas as rotas necessárias para isso. &lt;/p&gt;

&lt;p&gt;Vá até o seu &lt;code&gt;routes.rb&lt;/code&gt;, abaixo do comando do root, e digite o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resources :listas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O seu arquivo deve estar parecido com esse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;draw&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="s1"&gt;'listas#index'&lt;/span&gt; 

  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:listas&lt;/span&gt;

  &lt;span class="c1"&gt;# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com essa única linha já definimos todas as rotas para criar, ver, atualizar e deletar relacionadas ao controller listas. Quer ver isso melhor? Então vá até o seu terminal e digite esse comando para listar todas rotas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails routes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você verá uma tabela que lista tudo das rotas: nome, URI, Pattern e o seu controller#action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd75bcvuozq9u2lumkldw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd75bcvuozq9u2lumkldw.png" alt="rotas do projeto"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa rotas já serão suficientes para nós nesse projeto, mas, caso queira entender mais a fundo sobre esse ponto no Rails, recomendo olhar &lt;a href="https://guides.rubyonrails.org/routing.html" rel="noopener noreferrer"&gt;a documentação oficial&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Criando a model
&lt;/h3&gt;

&lt;p&gt;Agora precisamos trabalhar com o banco de dados(DB), onde iremos guardar as informações das nossas listas. Para isso, existem as models que nos permitem criar classes que irão representar tabelas no DB.&lt;/p&gt;

&lt;p&gt;Para as nossas listas, pensei em colocarmos apenas dois campos simples: nome e descrição. O primeiro é do tipo &lt;code&gt;string&lt;/code&gt; e o segundo do tipo &lt;code&gt;text&lt;/code&gt;, caso queira adicionar outros, consulte os &lt;a href="https://guides.rubyonrails.org/v3.2/migrations.html#supported-types" rel="noopener noreferrer"&gt;tipos aceitos&lt;/a&gt; pelo Rails. Tudo isso pode ser feito direto pelo terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails generate model Lista nome:string descricao:text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repare que &lt;code&gt;Lista&lt;/code&gt; é o nome do nosso modelo e os demais são os seus atributos acompanhados dos seus tipos.&lt;/p&gt;

&lt;p&gt;Você deve ter recebido uma resposta como essa:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Figghjnhcycwtsoiz9o1q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Figghjnhcycwtsoiz9o1q.png" alt="criação model rails"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primeiro, note que ele gerou um arquivo dentro da pasta &lt;code&gt;/db/migrate/&lt;/code&gt;, esse arquivo é uma &lt;a href="https://medium.com/@juniorb2s/migrations-o-porque-e-como-usar-12d98c6d9269" rel="noopener noreferrer"&gt;migration&lt;/a&gt;. Segundo, o Rails criou um arquivo &lt;code&gt;listum.rb&lt;/code&gt; dentro de &lt;code&gt;/app/models/&lt;/code&gt; que é o nosso arquivo de model de fato. Porém, algo engraçado é que ele o criou com o nome Listum em vez de Lista, isso ocorre porque o Rails tenta automaticamente colocar o nome do modelo no plural, o que não acabou dando muito certo nesse caso hahaha. Isso pode acabar nos atrapalhando em algum ponto posterior, então vamos alterar o nome desse arquivo para &lt;code&gt;lista.rb&lt;/code&gt; e trocar a sua primeira linha para &lt;code&gt;class Lista &amp;lt; ApplicationRecord&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Analise a migration criada, ela apresenta uma estrutura que representa uma tabela com nome &lt;code&gt;lista&lt;/code&gt; e que tem duas colunas: nome e descricao.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CreateLista&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Migration&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;6.0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;change&lt;/span&gt;
    &lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="ss"&gt;:lista&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="ss"&gt;:nome&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt; &lt;span class="ss"&gt;:descricao&lt;/span&gt;

      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timestamps&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas criar uma model não cria a tabela automaticamente no DB, já que podemos querer fazer alguma alteração na migration após essa criação. Sendo assim, precisamos fazer essas mudanças se refletirem no banco de dados e isso é feito com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails db:migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você vai encontrar uma saída como essa informando que a tabela foi criada:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjsn4hosuzyjvv2o4h78t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjsn4hosuzyjvv2o4h78t.png" alt="Criação tabela rails"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso fique com dúvidas sobre os comandos de db do rails, pode acessar &lt;a href="https://guides.rubyonrails.org/active_record_migrations.html#running-migrations" rel="noopener noreferrer"&gt;esse link da documentação&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Agora sim, caro dev, demos passos importantes no nosso projeto e daremos alguns ainda mais a partir de agora. Chegou a hora de criarmos novos métodos no nosso controller, que tal começarmos pelo de cadastrar uma nova lista?&lt;/p&gt;
&lt;h3&gt;
  
  
  Criação de novos métodos
&lt;/h3&gt;

&lt;p&gt;Para isso, vamos utilizar duas rotas que já criamos, a &lt;code&gt;/listas/new&lt;/code&gt; e a &lt;code&gt;/listas&lt;/code&gt; com o método POST. Lembre-se que você pode ver todas as rotas do app utilizando o comando &lt;code&gt;rails routes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Iniciaremos criando a função new no controller:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ListasController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por enquanto ele ficará vazio, pois queremos apenas que ele renderize a view padrão.&lt;/p&gt;

&lt;p&gt;Em seguida, criamos um arquivo &lt;code&gt;new.html.erb&lt;/code&gt; dentro da &lt;code&gt;/views/listas/&lt;/code&gt; e podemos colocar um html qualquer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Criar uma nova lista&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se tudo estiver correto, você conseguirá encontrar esse conteúdo pela rota &lt;code&gt;/listas/new&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Infelizmente apenas esse h1 não irá fazer o cadastro das listas que precisamos haha. Então, vamos complementar a página com um formulário, mas repare que ele terá uma estrutura diferente, a estrutura de tags do Rails:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Criar uma nova lista&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form_with&lt;/span&gt; &lt;span class="ss"&gt;scope: :lista&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;local: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;url: &lt;/span&gt;&lt;span class="n"&gt;listas_path&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt; &lt;span class="ss"&gt;:nome&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_field&lt;/span&gt; &lt;span class="ss"&gt;:nome&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:descricao&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Descrição"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text_area&lt;/span&gt; &lt;span class="ss"&gt;:descricao&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Salvar"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As tags do Rails sempre seguem a estrututa &lt;code&gt;&amp;lt;%=  %&amp;gt;&lt;/code&gt; e quando é apenas código ruby utiliza-se o &lt;code&gt;&amp;lt;%  %&amp;gt;&lt;/code&gt;, como no caso do &lt;code&gt;end&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Bom, tenho algumas coisas importantes para te apresentar, então preste atenção! &lt;code&gt;form_with&lt;/code&gt; é a tag de formulário que estamos utilizando, nesse caso ela recebe dois parâmetros: o &lt;code&gt;scope&lt;/code&gt; que serve para definir um identificador para esse formulário, passamos &lt;code&gt;:lista&lt;/code&gt; como identificador, e que será utilizado mais tarde para recuperar os dados preenchidos nos campos. Além desse, também tem o &lt;code&gt;local&lt;/code&gt;, que serve para dizer que não queremos enviar as respostas desse form por Ajax.&lt;/p&gt;

&lt;p&gt;Existe também um terceiro parâmetro que merece atenção especial, o &lt;code&gt;url&lt;/code&gt;. Se ele não fosse passado, os dados seriam enviados para a mesma rota &lt;code&gt;/listas/new&lt;/code&gt;, mas com o método POST. Porém, isso não nos serve porque já temos a rota &lt;code&gt;/listas&lt;/code&gt; com o POST para receber esses dados, então utilizamos esse parâmetro para definir o novo ponto de envio. Você pode estar se perguntando o que significa &lt;code&gt;listas_path&lt;/code&gt;, listas é o nome da rota desejada e quando utilizado o _path o Rails retorna a rota relativa a esse nome, no caso &lt;code&gt;/listas&lt;/code&gt;. Lembre-se mais uma vez que tudo sobre as rotas do app podem ser vistas com o comando &lt;code&gt;rails routes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Agora repare nas demais tags utilizadas: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;form.label&lt;/code&gt; imprime o nome de um campo para o usuário;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;form.text_field&lt;/code&gt; cria um campo de texto comum;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;form.text_area&lt;/code&gt; cria um campo de texto em área;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;form.submit&lt;/code&gt; cria um botão para enviar os dados do form.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ao recarregar a página você irá encontrar algo assim:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffhreewfea5zyib2wpn42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffhreewfea5zyib2wpn42.png" alt="tela formulário lista"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O coitado está muito feio, mas isso pode ser resolvido com um pouco de CSS mais tarde.&lt;/p&gt;

&lt;p&gt;E ae, já tentou enviar esse fomulário? Se sim, deve ter recebido um erro como esse:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F07ll5l2k7illgbar20e9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F07ll5l2k7illgbar20e9.png" alt="tela erro envio form"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Basicamente ele está nos dizendo que não conseguiu encontrar a ação create no controller listas. O que significa que ele está enviando os dados para o local correto, basta criarmos esse método.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;plain: &lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:lista&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;inspect&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui estamos basicamente inspecionando todos os parâmetros passados, &lt;code&gt;render&lt;/code&gt; renderiza um template e &lt;code&gt;plain&lt;/code&gt; diz que o template é simplesmente o texto apartir dele. &lt;code&gt;:lista&lt;/code&gt; é aquele mesmo identificador que utilizamos no &lt;code&gt;scope&lt;/code&gt; do form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe7io567er64zj6btu5ic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe7io567er64zj6btu5ic.png" alt="renderizando textos da requisição"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente podemos pegar esses dados e salvá-los no banco de dados. Em tese isso já deveria funcionar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
    &lt;span class="vi"&gt;@lista&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:lista&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OBS: o Rails sabe que deve chamar o model que criamos pelo nome que utilizamos com a inicial maiúscula, o &lt;code&gt;Lista&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No entanto, se tentarmos enviar novamente o formulário, encontraremos mais um erro:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fadzku5hrusqe2cccqxvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fadzku5hrusqe2cccqxvm.png" alt="erro permição parâmetros"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isso ocorreu porque o Rails não nos permite simplesmente pegar todos os atributos passados na requisição do form e salvar, pois um usuário com má intenção pode enviar atributos a mais para quebrar ou roubar algo da nossa aplicação. Sendo assim, precisamos especificar exatamente quais atributos queremos pegar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
    &lt;span class="vi"&gt;@lista&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:lista&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:nome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:descricao&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="vi"&gt;@lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;

    &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;lista_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@lista&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora estamos pegando apenas o nome e descrição para criar uma nova lista. Já te adiantando, o &lt;code&gt;@lista.save&lt;/code&gt; salva a lista no DB e o &lt;code&gt;redirect_to lista_path(@lista)&lt;/code&gt; diz ao Rails que queremos redirecionar para o método show e exibir essa nova lista, será que isso vai funcionar?&lt;/p&gt;

&lt;p&gt;Infelizmente não! Ainda precisamos criar esse método para que tudo funcione:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;show&lt;/span&gt;
    &lt;span class="vi"&gt;@lista&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O &lt;code&gt;find&lt;/code&gt; irá buscar por uma lista utilizando o seu &lt;code&gt;id&lt;/code&gt;, não se preocupe que o Rails irá passar esse id automaticamente pelo comando do &lt;code&gt;redirect_to&lt;/code&gt;. Mas antes precisamos criar uma página HTML para renderizar essa lista, então crie um &lt;code&gt;show.html.erb&lt;/code&gt; na pasta de listas.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;Nome: &lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="vi"&gt;@lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nome&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;Descrição: &lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="vi"&gt;@lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;descricao&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A variável &lt;code&gt;@lista&lt;/code&gt; é a mesma que estamos retornando no método show. Então, teremos algo assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ure0dmb7zdi52v9u4zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ure0dmb7zdi52v9u4zv.png" alt="exibindo uma lista rails"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora sim! Já conseguimos cadastrar e exibir uma lista, para fechar com chave de ouro vamos exibir todas as listas!&lt;/p&gt;

&lt;p&gt;Volte a ação index no controller:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
    &lt;span class="vi"&gt;@listas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dessa forma, a variável listas irá guardar todas as listas registradas, basta exibir elas em seu respectivo arquivo, o &lt;code&gt;index.html.erb&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Aqui ficarão as nossas listas&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;table&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;Nome&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;th&amp;gt;&lt;/span&gt;Descrição&lt;span class="nt"&gt;&amp;lt;/th&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;

    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="vi"&gt;@listas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;lista&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nome&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;descricao&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E esse será o nosso resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faxqzb2z763h6i6kwat2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faxqzb2z763h6i6kwat2g.png" alt="exibindo todas as listas rails"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conseguimos caminhar bastante! Porém, ainda a muita estrada pela frente, pois o nosso CRUD não está finalizado. Sendo assim, peço que me acompanhe no próximo post dessa jornada!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Criando um projeto em Ruby on Rails</title>
      <dc:creator>Jackson Alves</dc:creator>
      <pubDate>Sun, 27 Sep 2020 19:41:23 +0000</pubDate>
      <link>https://dev.to/jackson541/criando-um-projeto-em-ruby-on-rails-3bhd</link>
      <guid>https://dev.to/jackson541/criando-um-projeto-em-ruby-on-rails-3bhd</guid>
      <description>&lt;p&gt;Olá, dev! Resolvi compartilhar um pouco sobre o que estou estudando de &lt;a href="https://rubyonrails.org/" rel="noopener noreferrer"&gt;Rails&lt;/a&gt; 6. Sendo assim, vou criar uma série de posts onde abordo alguns temas iniciais como: iniciar um projeto, realizar um CRUD (Create, Read, Update, Delete), aplicar &lt;a href="https://pt.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="noopener noreferrer"&gt;DRY&lt;/a&gt; nos arquivos HTML, upload de imagens, autenticação etc.&lt;/p&gt;

&lt;p&gt;Mas antes, se está pensando se realmente vale a pena aprender esse framework, então recomendo ler esse &lt;a href="https://becode.com.br/por-que-aprender-ruby-on-rails/" rel="noopener noreferrer"&gt;excelente post&lt;/a&gt; de um chará meu.&lt;/p&gt;

&lt;p&gt;Neste post irei começar um clássico projeto de lista de tarefas, pode parecer simples, mas por meio dele consiguirei passar vários pontos desse framework. Está pronto!? Então abra o editor e prepare o café!&lt;/p&gt;

&lt;p&gt;Para criar um projeto é necessário ter o Rails instalado em sua máquina, &lt;a href="https://guides.rubyonrails.org/getting_started.html#creating-a-new-rails-project-installing-rails" rel="noopener noreferrer"&gt;neste link&lt;/a&gt; você encontra tudo que é necessário ter previamente para instalá-lo.&lt;/p&gt;

&lt;p&gt;Agora, já podemos dar o nosso primeiro comando que irá criar o projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails new Listas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Listas&lt;/code&gt; é o nome do projeto que será criado, fique a vontade para escolher o seu!&lt;/p&gt;

&lt;p&gt;Talvez demore por ser a primeira vez que você está criando um projeto, mas isso é normal. Se tudo der certo, deve aparecer uma mensagem parecida com essa para você:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fma8sf2f8r8o561cyzcxf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fma8sf2f8r8o561cyzcxf.png" alt="projeto rails criado"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao entrar no projeto, você irá se deparar com muitas pastas e arquivos, mas não se assuste! Existem 3 pastas que são do nosso interesse agora: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;app: local onde ficará a maior parte do código da nossa aplicação;&lt;/li&gt;
&lt;li&gt;config: pasta com os arquivos de configuração e, em especial, o arquivo das rotas;&lt;/li&gt;
&lt;li&gt;db: pasta que irá guardar o nosso banco de dados e os arquivos de &lt;a href="https://medium.com/@juniorb2s/migrations-o-porque-e-como-usar-12d98c6d9269" rel="noopener noreferrer"&gt;migrations&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Além dessas, existem várias outras e que você pode encontrar uma breve descrição &lt;a href="https://guides.rubyonrails.org/getting_started.html#creating-the-blog-application" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bom, agora o que nos resta é ver toda a arquitetura do Rails funcionando. Para isso, digite o seguinte comando dentro do seu projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e acessar a url &lt;code&gt;localhost:3000&lt;/code&gt; que irá encontrar a seguinte tela:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxr5m74t6akzemk7tg6xt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxr5m74t6akzemk7tg6xt.png" alt="tela inicial rails"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Parabéns! Já temos a nossa arquitetura básica funcionando, agora só falta sairmos desenvolvendo a vontade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Que tal entender mais sobre a arquitetura do Rails?
&lt;/h3&gt;

&lt;p&gt;Ele é baseado na arquitetura de software Model View Controller(MVC). Nessa arquitetura o código é dividido em três partes principais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model: responsável pela criação dos modelos das entidades do projeto e é um espelho das tabelas no banco de dados;&lt;/li&gt;
&lt;li&gt;View: responsável pela parte que interage com o usuário e que pega dados dessa interassão e envia ao controller;&lt;/li&gt;
&lt;li&gt;Controller: responsável por comportar as regras de negócio do projeto, intermede a comunicação entre a View e a Model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fizglkimym7ag0osihc63.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fizglkimym7ag0osihc63.jpg" alt="imagem exemplo MVC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308" rel="noopener noreferrer"&gt;Neste artigo&lt;/a&gt; você pode encontrar uma visão mais detalhada desse padrão.&lt;/p&gt;

&lt;p&gt;E ae!? Está a fim de ir um pouco mais além? No &lt;a href="https://dev.to/jackson541/crud-em-ruby-on-rails-4io4"&gt;próximo post&lt;/a&gt; irei falar sobre o crud da aplicação que iniciamos hoje, espero você lá!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
