Home - Jovennan/jornal GitHub Wiki
Bem vindo a wiki do nosso APP jornal!
- Abra o terminal e digite o código abaixo, para criar um novo APP
$ rails new jornal -d postgresql
- Edite o arquivo config/database.yml:
- username: unipe
- password: unipe
- host: localhost
- port: 5432
- No terminal execute o comando:
$ rails db:create
- Acesse a pasta do rais do APP
cd jornal
- Acessando Conteúdo Estático
$ rails generate controller paginas_estaticas
- Na pasta: app/view/paginas_estaticas, crie o arquivo: index.html.erb
- No arquivo insira o seguinte conteúdo:
<h1>Olá Rails<h1>
<%= @nome %>
- No arquivo: app/controller/paginas_estaticas_controller.rb
- Insira o seguinte conteúdo:
def index @nome = "seu nome" end
- Insira o conteúdo seguinte no arquivo: config/routes.rb
root to: "paginas_estaticas#index"
git init
git add -A
git commit -m "olá rails"
- Sua conta do GitHub
- Crie um novo repositorio com o nome jornal
git remote add origin [email protected]:seuUsuario/jornal.git
git push -u origin master
Acesse o Repositório do Bootstrap-sass
- No arquivo gemfile adicione:
gem 'bootstrap-sass', '~> 3.3.6'
- Baixe a Gem:
bundle install
- Altere o arquivo app/assets/stylesheets/application.css para application.scss e adicione:
@import "bootstrap"; body { padding-top: 100px; } footer { margin-top: 100px; } table, td, th { vertical-align: middle !important; border: none !important; } th { border-bottom: 1px solid #DDD !important; }```
- Insira no arquivo app/assets/javascripts/application.js
//= require bootstrap-sprockets
- Edite o arquivo app/views/layouts/application.html.erb
- Iserir o código abaixo, logo após a Tag
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<ul class="nav navbar-nav">
<li><a href="/">Início</a></li>
<li><a href="/noticias">Notícias</a></li>
</ul>
</div>
</div>
</div>
- Substitua a Tag
<%= yield %>
por:
<div class="container">
<%= yield %>
</div>
- Iserir o código abaixo, acima da Tag
</body>
<footer>
<div class="container">
UNIPE 2017
</div>
</footer>
Como o Rails gera os artefatos (Models - Cotrollers - Views) automaticamente
- Na pasta config/initializers
- Edite o seguinte arquivo: inflections.rb
- E copie o código disponível em: https://github.com/Jovennan/jornal/wiki/inflections.rb
Gere o componente Notícia
$ rails generate scaffold Noticia autor:string titulo:string conteudo:text imagem:string
No terminal execute os comandos:
$ rails db:migrate
rails server
- acesse http://localhost:3000
No arquivo gemfile adicione:
- gem 'carrierwave'
Baixe a Gem:
$ bundle install
Agora podemos gerar o código para gerenciar uploads. No terminal execute:
rails generate uploader Imagem
Edite o arquivo app/models/noticia.rb acrescentando:
- mount_uploader :imagem, ImagemUploader
Edite o arquivo app/views/noticias/_form.html.erb substituindo na linha 31:
-
<%= f.text_field :imagem %>
, por: <%= f.file_field :imagem %>
e na linha 1:
-
<%= form_for noticia do |f| %>
, por: <%= form_for(noticia, :html => { :multipart => true }) do |f| %>
Edite o arquivo app/views/noticias/show.html.erb substituindo na linha 20:
-
<%= @noticia.imagem %>
, por: <%= image_tag(@noticia.imagem_url, :width => 600) if @noticia.imagem.present? %>
No terminal execute os comandos:
$ rails server
- acesse: http://localhost:3000
Gere o componente Comentario
$ rails generate scaffold Comentario autor:string conteudo:text noticia_id:integer
Na pasta db/migrate/ edite o arquivo terminado em 'create_comentarios.rb' depois de:
-
t.timestamps
-
end
-
Insira:
-
add_foreign_key :comentarios, :noticias, column: :noticia_id
No terminal execute os comandos
$ rails db:migrate
$ rails server
Edite o arquivo app/models/noticia.rb acrescentando:
has_many :comentarios
Edite o arquivo app/models/comentario.rb acrescentando:
belongs_to :noticia
Edite o arquivo app/views/noticias/show.html.erb após a Tag de imagem:
<%= image_tag(@noticia.imagem_url, :width => 600) if @noticia.imagem.present? %>
Adicione o seguinte:
<h3>Comentários</h3>
<% @noticia.comentarios.each do |comentario| %>
<div>
<strong><%= comentario.autor %></strong>
<br />
<p><%= comentario.conteudo %><p>
</div>
<% end %>
<%= render 'comentarios/form' %>
Edite o arquivo app/controllers/noticias_controller.rb na action show:
def show
end
E deixe-a assim:
def show
@noticia = Noticia.find(params[:id])
@comentario = @noticia.comentarios.build
end
Edite o arquivo app/views/comentarios/_form.html.erb e após:
<div class="field">
<%= f.label :conteudo %>
<%= f.text_area :conteudo %>
</div>
Adiciona:
<div class="field">
<%= f.hidden_field :noticia_id %>
</div>
Adicione classes Bootstrap
<div class="row">
<div class="col-md-6 col-mdoff-set-3 col-xs-12">
</div>
</div>
<%= link_to 'Mostrar', @noticia, class: 'btn btn-primary' %>
<%= link_to 'voltar', noticias_path, class: 'btn btn-default' %>
<div class="form-group">
<%= f.label :autor %>
<%= f.text_field :autor, class: 'form-control' %>
end
<table class="table table-hover">
No terminal execute os comandos:
rails db:migrate
rails server
- acesse: http://localhost:3000