Posts Tagged ‘value’

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

Helper para criar breadcrumb em Ruby on Rails

Postado em 14 jan 2009
Categoria(s) Ruby on Rails

Estou desenvolvendo uma aplicação em rails, hoje surgiu a necessidade de criar a navegação por breadcrumb. Fui atrás para ver o que já existia em Rails, infelizmente encontrei algumas coisas complexas e estourando o escopo da minha minha necessidade. Na verdade o que eu precisava era criar links e algumas vezes somente aparecer o texto sem link no breadcrumb.

Em vez de perder um tempão na internet fuçando, decidi fazer um helper para gerar o breadcrumb conforme a minha necessidade.

Fiz o seguinte, no application_helper.rb criei o método breadcrumb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
 
  def breadcrumb(array)
    output = '
<div class="breadcrumb">'
    size = array.size - 1
    array.each {
      |e| e.each {
        |key, value|
 
        if value.empty?
          output += key
        else
          output += link_to(key, value)
        end
 
        output += " > " if size > 0
      }
 
      size -= 1
    }
    output += '</div>
'
 
    return output
  end
end

No meu template eu chamo o helper breadcrumb passando um array e em cada posição do array um hash separado pela chave e valor, onde a chave é o texto e o valor é o link. Caso no valor eu passe uma string vazia ”, apenas é colocado o texto no breadcrumb.

Exemplo no template show.rhtml:

1
<%= breadcrumb([{ 'Home' => home_url }, { 'Notícias' => url_for(:controller => :histories) }, { @history.title => '' }]) %>

Que vai gerar o seguinte html:

1
<a href="http://localhost:3000/">Home</a> > <a href="/histories">Notícias</a> > Governo Federal qualifica a gestão da área de Tecnologia da Informação

Outro exemplo mais simples:

1
2
3
<%= breadcrumb([{ 'Home' => 'http://patrickespake.wordpress.com' }, { 'Tags' => 'http://patrickespake.wordpress.com/tags') }, { 'Ruby on Rails' => '' }]) %>
 
<%= breadcrumb([{ 'Home' => 'http://patrickespake.wordpress.com' }, { 'Tags' => 'http://patrickespake.wordpress.com/tags') }]) %>

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

  • Share/Bookmark