Removendo a div fieldWithErrors no Rails
20/11/06
Se você odeia aquela div (aquela que tem a classe fieldWithErrors) que o Ruby on Rails adiciona quando um campo é inválido, experimente adicionar isto ao seu arquivo conf/environment.rb:
ActionView::Base.field_error_proc = Proc.new { |html_tag, instance| "#{html_tag}" } - Permalink
- Trackback
- Comentários (4)
- Ao som de: Less Than Jake – Rest of My Life
Localização de mensagens de erro e datas no Rails
20/11/06
O pessoal da 37signals já apontou que não tem muito interesse em tornar o Ruby on Rails localizado. Até entendo o lado deles, já que estão muito mais preocupados em desenvolver seus próprios aplicativos web. Enquanto isso, existem alguns projetos de localização do Rails, como os plugins Globalize e GLoc. Mas se você não precisa do suporte total à localização (apenas datas e o texto da validação), veja como pode resolver este problema.
Datas
No arquivo config/environment.rb de seu projeto, adicione o seguinte código:
# Include your application configuration below
Date::MONTHNAMES = [nil] + %w(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro)
Date::DAYNAMES = %w(Domingo Segunda-Feira Terça-Feira Quarta-Feira Quinta-Feira Sexta-Feira Sábado)
Date::ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Aug Set Out Nov Dez)
Date::ABBR_DAYNAMES = %w(Dom Seg Ter Qua Qui Sex Sab)
Time::MONTHNAMES = Date::MONTHNAMES
Time::DAYNAMES = Date::DAYNAMES
Time::ABBR_MONTHNAMES = Date::ABBR_MONTHNAMES
Time::ABBR_DAYNAMES = Date::ABBR_DAYNAMES
Mensagens de erro
Eu não gosto da maneira como o Rails exibe as mensagens de erro. Particularmente, prefiro exibir as mensagens de erro dentro de uma dl. Então, modifiquei a maneira como são exibidas as mensagens. Seu arquivo app/helpers/application_helper.rb deve ficar da seguinte maneira:
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
def error_messages_for(object_name, options = {})
options = options.symbolize_keys
object = instance_variable_get("@#{object_name}")
unless object.errors.empty?
items = []
object.errors.each { |attribute, message| items << content_tag("dd", message) }
content_tag("dl",
content_tag("dt", "Para prosseguir, verifique os itens abaixo:") +
items.join(""),
"id" => options[:id] || "error", "class" => options[:class] || "error"
)
end
end
end
Update: Saiu a versão 1.2 RC1 do Ruby on Rails. O mais interessante é que Rails oferecerá suporte nativo a Unicode. Dê uma olhada no anúncio oficial. Se for muito preguiçoso, veja a versão traduzida pelo Akita.
Update 2: Não sei o porquê, mas hoje a substituição feita na classe Time parou de funcionar. Se você enfrentar o mesmo problema, substitua pelo código abaixo. Visto em poocs.net
class Time
alias :strftime_nolocale :strftime
def strftime(format)
format = format.dup
format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])
format.gsub!(/%A/, Date::DAYNAMES[self.wday])
format.gsub!(/%b/, Date::ABBR_MONTHNAMES[self.mon])
format.gsub!(/%B/, Date::MONTHNAMES[self.mon])
self.strftime_nolocale(format)
end
end - Permalink
- Trackback
- Comentários (18)
- Ao som de: blink-182 – Please Take Me Home
Listar métodos de uma classe em Ruby
10/11/06
Precisar saber quais são os métodos disponíveis em classe em Ruby? Essa é bem simples:
#!/usr/bin/env ruby
class MyClass
def my_public_method
end
private
def my_private_method
end
protected
def my_protected_method
end
end
m = MyClass.new
#lista somente métodos públicos
puts m.public_methods
#lista somente métodos privados
puts m.private_methods
#lista somente métodos protegidos
puts m.protected_methods
#lista todos os métodos
puts m.methods
Vale lembrar que os métodos public_methods e private_methods listam outros métodos que são herdados automaticamente.
- Permalink
- Trackback
- Comentários (0)
- Ao som de: +44 – Make You Smile
