Enquanto você está desenvolvendo aplicações Rails, especialmente aqueles que são principalmente fornecendo-lhe com uma interface simples para os dados em um banco de dados, que muitas vezes pode ser útil usar o método de andaime.

Andaimes oferece mais de emoções de demonstração baratos. Aqui estão alguns benefícios:

Você pode rapidamente obter o código na frente de seus usuários para o gabarito.
Você está motivado pelo rápido sucesso.
Você pode aprender Rails funciona olhando para o código gerado.
Você pode usar o andaime como base para jumpstarts seu desenvolvimento.

Exemplo Andaimes:

Para entender andaimes vamos criar um banco de dados chamado livro de receitas e uma tabela chamada receitas:
Criando um aplicativo Web vazio Rails:

Abra uma janela de comando e navegar para onde você deseja criar este aplicativo web livro de receitas. Eu usei c: \ ruby​​. Então, execute o seguinte comando para criar a estrutura de diretório completo.

Código:


C:\ruby> rails cookbook


Configurando o banco de dados:

Aqui é o caminho para criar banco de dados:

Código:


mysql> create database cookbook;
Query OK, 1 row affected (0.01 sec)

mysql> grant all privileges on cookbook.*
to 'root'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)


Para dizer Rails como encontrar o banco de dados, editar o arquivo de configuração c: \ ruby ​​\ livro \ config \ database.yml e alterar o nome do banco de dados para livro de receitas. Deixe a senha em branco. Quando terminar, ele deve ser algo como

Código:

development:
  adapter: mysql
  database: cookbook
  username: root
  password: [password]
  host: localhost
test:
  adapter: mysql
  database: cookbook
  username: root
  password: [password]
  host: localhost
production:
  adapter: mysql
  database: cookbook
  username: root
  password: [password]
  host: localhost


Rails permite que você execute no modo de desenvolvimento, o modo de teste, ou modo de produção, utilizando bases de dados diferentes. Este aplicativo usa o mesmo banco de dados para cada um.
Criando as tabelas do banco de dados:

Nós vamos usar a tabela a seguir para nosso propósito prático. Portanto, criar receitas de tabela sql prompt, como segue:

Código:


mysql> USE cookbook;
Changed database
mysql> CREATE TABLE recipes (
    -> id INT(11) NOT NULL AUTO_INCREMENT,
    -> title VARCHAR(40),
    -> instructions VARCHAR(255),
    -> PRIMARY KEY (id));
Query OK, 0 rows affected (0.06 Sec)


Criando um Modelo:

Primeiro, crie uma classe de modelo da Receita que manterá os dados da tabela no banco de dados de receitas. Use o seguinte comando dentro do diretório do livro de receitas.

Código:


C:\ruby\cookbook > ruby script\generate model Recipe


Observe que você está capitalizando Receita e usando a forma singular. Este é um paradigma Rails que você deve seguir sempre que criar um modelo.

Isso irá criar um arquivo chamado app / models / recipe.rb contendo uma definição esqueleto para a classe Receita.
Criando Controlador:

Agora temos que criar um controlador de receita com ações de manipular as receitas do banco de dados por meio das operações CRUD padrão: criar, ler, atualizar e excluir.

Código:


C:\ruby\cookbook > ruby script\generate controller Recipe


Observe que você está capitalizando Receita e usando a forma singular. Este é um paradigma Rails que você deve seguir sempre que criar um controlador.

Isso irá criar um arquivo chamado app / controllers / recipe_controller.rb contendo uma definição esqueleto para a classe RecipeController. Edite este arquivo e adicione o andaime linha: receita como mostrado

Código:

class RecipeController < ApplicationController
  scaffold:recipe
end


Esta única linha de código trará a tabela de banco de dados para a vida. Isto irá fornecer uma interface simples para os dados, e as formas de:

Criação de novas entradas
Edição de entradas atuais
Visualizando entradas atuais
Destruir entradas atuais

Ao criar ou editar uma entrada, andaime vai fazer todo o trabalho duro da geração de forma e manuseio para você, e ainda vai proporcionar a geração de forma inteligente, apoiando os seguintes tipos de entradas:

Simples cadeias de texto
Textareas (ou grandes blocos de texto)
seletores de data
seletores de data e hora

Agora vá para o diretório livro de receitas e executar o Servidor Web usando o seguinte comando:

Código:


C:\ruby\cookbook> ruby script/server


Agora abra um navegador e navegue até [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] Isto irá lhe fornecer uma tela para criar novas entradas na tabela receitas. A captura de tela é mostrada abaixo:


[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Uma vez que você pressione botão Criar para criar uma nova receita, o seu registro é adicionado na tabela de receitas e mostra seguinte resultado:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Você pode ver a opção para editar, mostrar e destruir os registros. Então brinque estas opções.

Você também pode listar todas as receitas disponíveis na tabela de receitas usando [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] URL
Reforçar o modelo:

Rails dá-lhe um monte de tratamento de erro de graça. Para entender isso, adicione algumas regras de validação para o modelo de receita vazio:

Modificar app / models / recipe.rb como se segue e, em seguida, testar a sua aplicação:

Código:

class Recipe < ActiveRecord::Base
  validates_length_of :title, :within => 1..20
  validates_uniqueness_of :title, :message => "already exists"
end


Essas entradas dará a verificação automática que:

validates_length_of: o campo não está em branco e não muito longo
validates_uniqueness_of: valores duplicados estão presos. Eu não gosto da mensagem de erro padrão Rails - por isso, dou a minha mensagem personalizada.

O Código Andaime gerada:

Com a ação de andaime, o Rails gera todo o código que precisa dinamicamente. Ao executar andaime como um script, podemos obter todo o código escrito para o disco onde podemos investigá-lo e, em seguida, começar a adaptá-la às nossas necessidades.

Então, agora vamos começar mais uma vez para gerar o código Andaime manualmente usando andaime script auxiliar:

Código:

C:\ruby\cookbook> ruby script/generate scaffold recipe
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/recipes
      exists  app/views/layouts/
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
  identical    app/models/recipe.rb
  identical    test/unit/recipe_test.rb
  identical    test/fixtures/recipes.yml
      create  app/views/recipes/_form.rhtml
      create  app/views/recipes/list.rhtml
      create  app/views/recipes/show.rhtml
      create  app/views/recipes/new.rhtml
      create  app/views/recipes/edit.rhtml
      create  app/controllers/recipes_controller.rb
      create  test/functional/recipes_controller_test.rb
      create  app/helpers/recipes_helper.rb
      create  app/views/layouts/recipes.rhtml
      create  public/stylesheets/scaffold.css
C:\ruby\cookbook>


O Controlador:

Vamos olhar para o código por trás do controller.This todo o código é gerado pelo andaime gerador. Então, se você vai abrir app / controllers / recipes_controller.rb então você vai encontrar algo como segue:

Código:

class RecipesController > ApplicationController
  def index
    list
    render :action => 'list'
  end

  verify :method => :post, :only => [ :destroy, :create, :update ],
        :redirect_to => { :action => :list }

  def list
    @recipe_pages, @recipes = paginate :recipes, :per_page => 10
  end

  def show
    @recipe = Recipe.find(params[:id])
  end

  def new
    @recipe = Recipe.new
  end

  def create
    @recipe = Recipe.new(params[:recipe])
    if @recipe.save
      flash[:notice] = 'Recipe was successfully created.'
      redirect_to :action => 'list'
    else
      render :action => 'new'
    end
  end

  def edit
    @recipe = Recipe.find(params[:id])
  end

  def update
    @recipe = Recipe.find(params[:id])
    if @recipe.update_attributes(params[:recipe])
      flash[:notice] = 'Recipe was successfully updated.'
      redirect_to :action => 'show', :id => @recipe
    else
      render :action => 'edit'
    end
  end

  def destroy
    Recipe.find(params[:id]).destroy
    redirect_to :action => 'list'
  end
end


Quando o usuário de um aplicativo Rails seleciona uma ação. por exemplo "Mostrar" - o controlador irá executar qualquer código na seção apropriada - "def show" - e então, por padrão vai render um modelo com o mesmo nome - "show.rthml". Esse comportamento padrão pode ser substituído:

O controlador usa métodos ActiveRecord como encontrar, find_all, novo, salvar, update_attributes, e destruir para mover dados de e para as tabelas do banco de dados. Note que você não tem que escrever quaisquer instruções SQL, trilhos vai cuidar disso automaticamente.
Os Visualizações:

Todos os pontos de vista e os correspondentes de todos os métodos de controle são criados pelo comando de andaime e eles estão disponíveis em app / views / diretório receitas.
Como Andaimes é diferente?

Se você passou por capítulos anteriores, então você deve ter visto que tínhamos criado métodos para listar, mostrar, apagar e criar dados etc mas andaime faz esse trabalho automaticamente.
Spoiler :