Posts Tagged ‘formulário’

Ruby on Rails conversão de datas com I18n

Postado em 09 nov 2009
Categoria(s) Ruby on Rails

Eu estou desenvolvendo uma aplicação que precisa trabalhar com datas com I18n e fazer conversões para salvar a data no banco de dados e exibir para o usuário de acordo com o seu idioma.

Eu estou usando o Date Picker do jQuery em um campo do tipo text_field.

datepicker

Vou mostrar um esboço de como eu fiz isso, em primeiro lugar eu defini no arquivo config/environment.rb o idioma:

config.i18n.default_locale = 'pt-BR'

Depois eu defini no arquivo config/locales/pt-BR.yml os formatos de data:

pt-BR:
  date:
    formats:
      default: "%d/%m/%Y"
      short: "%d de %B"
      long: "%d de %B de %Y"
 
    day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado]
    abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb]
    month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro]
    abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez]
    order: [ :day, :month, :year ]

No meu formulário eu deixei assim:

<% content_for :javascripts do %>
  <%= include_jquery %>
  <%= javascript_include_tag "jquery.maskedinput-1.2.2.min" %>
  <% javascript_tag do %>
    $(document).ready(function() {
      // Adiciona date picker ao campo data de nascimento
      $.datepicker.setDefaults($.extend({showMonthAfterYear: false}, $.datepicker.regional['<%= I18n.locale %>']));
      $("#investor_date_of_birth").datepicker({
        showOn: 'both',
        buttonImage: '/images/calendar.gif',
        buttonImageOnly: false,
        buttonText: '<%= t('ui.admin.crud.datepicker_button_text') %>',
        changeMonth: true,
        changeYear: true,
        yearRange: '1900:<%= Time.now.year %>'
      });
 
      // Adiciona mascara ao campo data de nascimento
      $("#investor_date_of_birth").mask("99/99/9999");
    });
  <% end %>
<% end %>
 
<% form_for [:admin, @investor] do |f| -%>
  <%= f.error_messages %>
 
  <%= f.label :date_of_birth %>
 
  <% if @investor.new_record? %>
    <%= f.text_field :date_of_birth, :class => "smallInput" %>
  <% else %>
    <%= f.text_field :date_of_birth, :value => l(@investor.date_of_birth, :format => :default), :class => "smallInput" %>
  <% end %>
<% end %>

Caso exista o registro é realizado a conversão para exibir a data corretamente no formulário, não é necessário fazer conversão para salvar no banco de dados, o Rails já faz isso automaticamente.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby on Rails como colocar um captcha no formulário, instalação e uso do plugin Simple Captcha

Postado em 01 fev 2009
Categoria(s) Ruby on Rails

Conheço um plugin chamado Simple Captcha, eu acho ele muito bom e satifaz todas as minhas necessidades.

Vou explicar como instalar e usar:

Instalação ImageMagick e RMagick::

Como o captcha trabalha com geração dinâmica de imagens e necessário instalar essas libs:

1
2
3
sudo apt-get install imagemagick
sudo apt-get install libmagick9-dev
sudo gem install rmagick

Instalação do plugin Simple Captcha:

No diretório do projeto digite o seguinte:

1
ruby script/plugin install svn://rubyforge.org/var/svn/expressica/plugins/simple_captcha

Configuração da aplicação:

No diretório do projeto digite:

1
rake simple_captcha:setup

O comando acima irá criar um arquivo de migração para armazenar os captchas gerados no banco de dados, também irá criar um partial para exibir o captcha na view.

Agora faça o migrate:

1
rake db:migrate

É necessário adicionar uma rota no arquivo config/routes.rb, essa rota será responsável por gerar as imagens:

1
map.simple_captcha '/simple_captcha/:action', :controller => 'simple_captcha'

Adicione a seguinte linha no arquivo app/controllers/application.rb:

1
2
3
ApplicationController < ActionController::Base
  include SimpleCaptcha::ControllerHelpers
end

Como usar:

No seu formulário na view adicione o seguinte:

1
<%= show_simple_captcha( : object=> "user" ) %>

Onde : object => “user” é o nome do seu model.
Obs.: Eu deixei separado o dois pontos, : object => “user” porque o wordpress troca por desenhos smiley, na hora de codificar deixa tudo junto.

No model adicione a seguinte linha:

1
2
3
class User < ActiveRecord::Base
  apply_simple_captcha
end

Agora no controller ao invés de usar:

1
@user.save

Use:

1
@user.save_with_captcha

O método @user.save funciona corretamente, mas não leva em consideração o novo campo captcha, por isso é necessário usar o método @user.save_with_captcha.

Outras opções de uso e configuração, para ver outras alternativas eu sugiro que leia: http://expressica.com/simple_captcha/.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Método IndexOfAny em C#

Postado em 20 abr 2008
Categoria(s) C#

O método IndexOfAny busca o índice da primeira ocorrência de um caracter ou muitos em uma string.

Vamos ver como isso funciona, construa o form abaixo com somente um TextBox.

Dê duplo clique sobre o TextBox e digite o código abaixo no evento TextChanged:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            char [] anyOf = {'@', '.', '!'};
            if (textBox1.Text.IndexOfAny(anyOf) == -1)
            {
                textBox1.BackColor = Color.Red;
            }
            else
            {
                textBox1.BackColor = Color.Green;
            }
        }

Rode a aplicação com F5, digite qualquer texto e depois insira os caracteres “@”, “.” ou “!”. A caixa de texto fica com o fundo vermelho quando não existe esses caracteres e fundo verde quando você digita os caracteres mencionados.

Vamos entender como o código funciona:

1
2
 
char [] anyOf = {'@', '.', '!'};

O código acima cria um array de caracteres com os itens que desejamos buscar na string do TextBox.

O código:

1
2
3
4
5
6
7
8
9
 
            if (textBox1.Text.IndexOfAny(anyOf) == -1)
            {
                textBox1.BackColor = Color.Red;
            }
            else
            {
                textBox1.BackColor = Color.Green;
            }

Que verifica se existe os caracteres procurados na string do TextBox a função:

1
2
 
textBox1.Text.IndexOfAny(anyOf)

Recebe o array de caracteres anyOf e busca na string, se encontrar retorna o índice do caracter na string, caso não encontre retorna -1.

Dessa forma fiz um IF se retornar -1 que dizer que não existe os caracteres buscados, qualquer coisa diferente significa que foi encontrada uma ocorrência dos caracteres.

E usando:

1
2
 
textBox1.BackColor = Color.Green;

Mudamos a cor de fundo do TextBox.

  • Share/Bookmark

Fechar formulário em C#

Postado em 20 abr 2008
Categoria(s) C#

Vou explicar como podemos fechar o formulário após clicar em um botão.

Para conseguir fazer esse exemplo você deve primeiro fazer o conteúdo explicado aqui: http://patrickespake.wordpress.com/2008/04/19/criacao-de-caixa-de-dialogo-em-c/.

Quando usuário clica no botão Abrir Caixa de Diálogo é executado o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult d = MessageBox.Show( "Você deseja sair?", "Aviso", MessageBoxButtons.YesNo );
 
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
            }
            else
            {
                // Código que deve ser executado quando clicar no botão NÃO
            }
        }

Esse código irá criar uma caixa de diálogo e questionar se o usuário deseja sair, atualmente não é executada nenhuma ação quando ele clica no botão Sim.

O código abaixo que define qual ação deve ser realizada quando o usuário clicar no botão Sim ou Não.

1
2
3
4
5
6
7
8
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
            }
            else
            {
                // Código que deve ser executado quando clicar no botão NÃO
            }

Modifique o código para ficar da seguinte forma:

1
2
3
4
5
            if ( d.ToString() == "Yes" )
            {
                // Código que deve ser executado quando clicar no botão SIM
                Close();
            }

Apenas colocamos o código:

1
Close();

Agora quando o usuário clicar no botão de confirmação Sim o formulário será fechado.

  • Share/Bookmark