2010-06-27 1 views
1

J'ai une date de type de colonne (prospectées de annoter) sur ma table Contacts:puis-je utiliser .to_s (: long) dans Postgres avec une date de type colonne sur Heroku dans les rails?

# date_entered  :date(255) 

Ceci est la ligne de code qui a travaillé pour moi localement sur ma base de données sqlite3, mais génère maintenant une erreur dans Heroku:

<%= contact.date_entered.to_s(:long) %> 

l'erreur que je reçois est:

wrong number of arguments (1 for 0) 

J'ai enlevé le composant :long et il semble fonctionner, mais maintenant, bien sûr, semble mal formaté.

Comment résoudre ce problème?

Répondre

0

Utilisez

date.strftime('%m/%d/%Y') 

pour le formatage de la date.

Aussi, vous pouvez passer outre to_s méthode pour la date/heure à utiliser la localisation I18n:

class Date 
    def to_s format = :default 
    I18n.l(self, :format => format) 
    end 
end 

Dans ce cas, peut utiliser à la fois: logn (: par défaut,: court) et « % d% B% Y 'formats.

UPD: En outre, il est logique de stocker ancienne méthode et l'appeler au cas où vous ne passez pas params:

class Date 
    alias :to_s :native_to_s 

    def to_s format = nil 
    format.nil? ? 
     self.native_to_s : 
     I18n.l(self, :format => format) 
    end 
end 
+0

savez-vous pourquoi: long ne fonctionne pas dans ce cas? – Angela

+0

Date.to_s n'a aucun argument par défaut. (http://ruby-doc.org/core/classes/Date.html#M000685) Mais comme je l'ai écrit ci-dessus, il pourrait être remplacé – fantactuka

+0

en dehors de l'écrasement ... pourquoi suggéreriez-vous d'utiliser date.strftime? Juste plus granulary? Je dois le répéter à chaque fois dans le contrôleur? – Angela

0

est-ce réellement un champ de date postgres?

end_date   | date 

est ce que postgres a comme champ de date, pouvez-vous vérifier sur la table elle-même? Coller contact.date_entered.class quelque part dans une vue pour savoir quelle est la classe exacte Ruby. J'ai l'intuition que ce n'est pas un horodatage ou un champ de date. Très probablement un texte ou varchar et donc ActiveRecord l'interprète de cette façon.

+0

Il est censé être un, Il est répertorié dans le Web agile avec rails v 3 .... – Angela

+0

Je ne peux pas dire à coup sûr sans avoir un coup d'oeil moi-même, avez-vous trouvé ce que la classe de "l'horodatage" que vous essayez d'afficher est? –

+0

hmmm .... tout ressemble à c'est la classe Date pour les deux ..... – Angela

Questions connexes