0.02
No release in over 3 years
Low commit activity in last 3 years
There's a lot of open issues
Easy CRUD generator for Rails Projects
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Templus Models

Instalação

Rails 4

gem 'templus_models', '~> 1.0'

Rails 4 I18n

gem 'templus_models', '~> 2.0'

Rails 5 I18n

gem 'templus_models', '~> 3.0'

Gerando um CRUD

Utilize o generator CRUD para criar um novo crud

rails g crud empresa

o arquivo empresa_crud.rb será criado:

create  app/raro_crud/empresa_crud.rb

O arquivo já configura o CRUD com todos os attributos do modelo:

class EmpresaCrud < RaroCrud

  titulo "Empresas"
  subtitulo "Subtitulo", :index
  descricao "Descrição do Cadastro", :index

  link_superior "Novo Empresa", id: "novo-button", icon: "plus", link: "new"

  ordenar_por :created_at
  itens_por_pagina 20

  #Campos mostrados na index
  campo_tabela :nome,  label: "Nome"
  campo_tabela :contato,  label: "Contato"
  campo_tabela :telefone,  label: "Telefone"
  campo_tabela :endereco,  label: "Endereco"

  #Campos mostrados no formulários de cadastro
  campo_formulario :nome,  label: "Nome"
  campo_formulario :contato,  label: "Contato"
  campo_formulario :telefone,  label: "Telefone"
  campo_formulario :endereco,  label: "Endereco"

  #Campos mostrados na visualizacao
  campo_visualizacao :nome,  label: "Nome"
  campo_visualizacao :contato,  label: "Contato"
  campo_visualizacao :telefone,  label: "Telefone"
  campo_visualizacao :endereco,  label: "Endereco"

  #Campos mostrados na busca
  campo_busca :nome,  label: "Nome"
  campo_busca :contato,  label: "Contato"
  campo_busca :telefone,  label: "Telefone"
  campo_busca :endereco,  label: "Endereco"

  #Campos mostrados no relatório
  campo_listagem :nome, label: "Nome"
  campo_listagem :contato, label: "Contato", visible_if: Proc.new { Usuario.current.root? }
  campo_listagem :telefone, label: "Telefone"
  campo_listagem :endereco, label: "Endereco"

end

Alterar forma de visualização do campo

campo_visualizacao :tipo, label: "Tipo", label_method: :descricao_do_tipo

Atributo especial de endereço

Para vincular um formulário de cadastro de endereço utilize o método adicionar_endereco no arquivo:

class EmpresaCrud < RaroCrud

  titulo "Empresas"
  subtitulo "Subtitulo", :index
  descricao "Descrição do Cadastro", :index

  link_superior "Novo Empresa", id: "novo-button", icon: "plus", link: "new"

  adicionar_endereco
  ...
end

Depois adicione no seu modelo o método

accepts_nested_attributes_for :endereco, :allow_destroy => true

Campos do tipo data

Para vincular o datepicker no campo do tipo Date

campo_formulario :data_nascimento, label: "Data de nascimento", as: :string, input_html: {class: "datepicker"}

Para formatar a data na tabela, utilize o date_format

campo_tabela :created_at,  label: "Data", date_format: "%d/%m/%Y"

Para ordernar a tabela por outro campo

campo_tabela :tipo_veiculo,  label: "Tipo de Veiculo", sort_field: :tipo_veiculo_descricao

Campos do tipo boolean

Para vincular o iCheck no campo do tipo boolena

campo_formulario :data_nascimento, label: "Data de nascimento", input_html: {class: "i-checks"}

Busca por intervalo

Para buscas de valores em um intervalo

campo_busca :salario, label: "Salário", as: :range

Aplicando mascara

Para aplicar uma mascara em um campo

campo_formulario :data_nascimento, label: "Data de nascimento", input_html: {"data-mask" => "(99) 9999-9999"}

Para mascara de telefone com 8 e 9 digitos (com e sem DDD)

campo_formulario :data_nascimento, label: "Data de nascimento", input_html: {class: "mask-telefone"}
ou
campo_formulario :data_nascimento, label: "Data de nascimento", input_html: {class: "mask-telefone-ddd"}

Aplicando Dica

Para aplicar uma dica em um campo

campo_formulario :cpf, label: "CPF", hint: "Somente números"

Adicionando javascrit

Para adicionar um javascript em um formulário do RaroCrud, basta criar um arquivo .js dentro da seguinte pasta

assets/javascripts/crud/

Depois adicione em seu arquivo ModelCrud o javascript

script_formulario :cidade_estado

Adicionando escopos

Para adicionar um scope a uma index do RaroCrud

escopos [[:maiores_que_1000, "Maiores"], [:menores_que_1000, "Menores"]]

Para adicionar um partial para o scope em uma index do RaroCrud

escopos "/cancelamentos/escopos"

Adicionando ações

Para adicionar uma nova ação

acoes :pagar!, "Pagar"

Caso deseja inserir uma condição, basta adicionar um proc ao comando

acoes :pagar!, "Pagar", Proc.new {|p| Usuario.current.ability.can?(:create, p)}

Caso necessite de um ação que redireciona para uma view, basta adicionar uma partial

class PapelCrud < RaroCrud
acoes :associar, "Definir permissões", Proc.new {|p| Usuario.current.ability.can?(:create,p)}
end

Local e conteudo da partial

papeis/_associar.html.erb

<%= render_crud do %>
#Conteudo HTML
<% end %>

OBS: Caso você não necessite do template do RaroCrud, adicione somente o Conteudo HTML

Adicionando links para cada registro

links "Permissão", url: "/crud/papel"

Link com wiselink

links "Permissão Wiselink", url: "/crud/papel", wiselink: true

Link para associações

links "Testes1", associacao: :teste1

Link com partial

links "acoes", partial: "/atendimentos/acoes"

Retirando a opção de adicionar novo registro em relações belongs_to

campo_formulario :papel, label: "Papel", label_method: :descricao, add_registro: false

Adicionar condição para mostrar um campo no formulário

  campo_formulario :perfil, label: "Perfil", if: Proc.new {|obj| Usuario.current.root? }

Manipulando actions padrão do RaroCrud

Para remover um action da tabela do RaroCrud

sem_visualizacao
sem_edicao
sem_exclusao

Para remover um action de acordo com uma condição

edicao Proc.new {|obj| !obj.root? }
exclusao Proc.new {|obj| !obj.root? }
visualizacao Proc.new {|obj| obj.root? }

Para remover a opção de Exportar Relatório de acordo com uma condição

listagem Proc.new { |model| Usuario.current.root? }

Manipulando links superiores

Adicionando um link

link_superior "Novo Teste", id: "novo-button", icon: "plus", link: "new"

Esse link será /crud/teste/new

Adicionando uma url

link_superior "Inicio", id: "novo-button", icon: "", url: :busca_api_cidades
ou
link_superior "Inicio", id: "novo-button", icon: "", url: "/api/busca/cidades"

Nesse caso será um redirecionamento

Adicionando uma partial

link_superior "Novo", partial: "/usuarios/actions"

Aplicando permissão ao link

link_superior "Novo Teste", id: "novo-button", icon: "plus", link: "new", can: Proc.new {|obj| Usuario.current.ability.can?(:create, Teste)}

Adicionando aucomplete

Para adicionar autocomplete em um campo de formulário

campo_formulario :cidade, label: "Cidade", autocomplete: {classe: :cidade, campo: :nome, label_method: :cidade_estado}

Formulário Alinhado

Para adicionar formulários alinhados utilize o método grupo_formulario:

  campo_formulario :dado_boleto, label: "Dados para emissão de boleto",
                   grupo: [{campo: :banco, label: "Banco", add_registro: false},
                           {campo: :conta, label: "Conta"},
                           {campo: :observacao, label: "Instruções bancárias"}]

Não se esqueça de permitir os campos dos filhos no modelo do pai com accepts_nested_attributes_for

  accepts_nested_attributes_for :subtopicos, :allow_destroy => true

Caso deseja um label diferente para os botões Adicionar e Remover do grupo, basta adicionar o campo sublabel

  campo_formulario :dado_boleto, label: "Dados para emissão de boleto", sublabel: "Boleto"
                   grupo: [{campo: :banco, label: "Banco", add_registro: false},
                           {campo: :conta, label: "Conta"},
                           {campo: :observacao, label: "Instruções bancárias"}]