Deutsches Datum mit Funktion

Hallo allerseits,

ich möchte folgendes Feature mit einem Datumswert
(Geburtsdatum/Projektstart, etc.) realisieren:

  • DB/Model: Datentyp date
  • View: Eingabefeld: Textfeld, kein Date-Helper oder ähnliches
  • Funktionalität (Model oder Controller), die
    a) prüft, ob das Datum gültig ist
    b) ergänzt: bei Eingabe von 08.01 wird 08.01.2008, etc.
    c) in date wandelt

Leider bin ich mit meinen Versuchen gescheitert, da ich es nicht
geschafft habe, zwischen Model und View von date an string und umgekehrt
zu übergeben.

Kann mir jemand einen Tipp geben ?

Joachim

Hallo Joachim,

vielleicht schaust du dir mal die folgende JavaScript Bibliothek mit
zugehörigem Rails Plugin an:

http://datetime.toolbocks.com/

Ich habe es selber noch nicht benutzt und kann daher von keinen
Erfahrungen damit berichten.

Gruß,
Garret

On Jan 8, 2008, at 20:23 , Joachim Mützel wrote:

Leider bin ich mit meinen Versuchen gescheitert, da ich es nicht
geschafft habe, zwischen Model und View von date an string und
umgekehrt
zu übergeben.

Kann mir jemand einen Tipp geben ?

Mach doch einfach eine neue Methode in deinem Model, zB. date_str= der
dann der Wert aus dem View zugewiesen wird. Diese Methode kann dann den
String parsen und auf das date field in deinem Model setzen. Und wenn du
dann noch eine passende date_str dazu hast kann die das date dann auch
wieder als String formatiert zurueck liefern (zum anzeigen im View).

Urban H. wrote:

On Jan 8, 2008, at 20:23 , Joachim Mützel wrote:

Leider bin ich mit meinen Versuchen gescheitert, da ich es nicht
geschafft habe, zwischen Model und View von date an string und
umgekehrt
zu übergeben.

Kann mir jemand einen Tipp geben ?

Mach doch einfach eine neue Methode in deinem Model, zB. date_str= der
dann der Wert aus dem View zugewiesen wird. Diese Methode kann dann den
String parsen und auf das date field in deinem Model setzen. Und wenn du
dann noch eine passende date_str dazu hast kann die das date dann auch
wieder als String formatiert zurueck liefern (zum anzeigen im View).

Wie bekomme ich den Wert eines Textfeldes der View zum Model bzw.
Controller. Die Variable @attributes des Models kennt ja nur die Felder
der Tabelle.

Vielen Dank.

On Jan 9, 2008, at 20:13 , Joachim Mützel wrote:

Wie bekomme ich den Wert eines Textfeldes der View zum Model bzw.
Controller. Die Variable @attributes des Models kennt ja nur die
Felder
der Tabelle.

Ganz einfach. Wenn die Methoden date_str und date_str= (aus meinem
obigen Beispiel) in deinem Model definiert sind ersetzt du einfach im
View alle Vorkommen des date Attributs mit diesem neuen “Attribut”.
Letztendlich gibt es in deiner Model Klasse ja auch nur Methoden fuer
all deine Felder in der Datenbank, die halt automatisch fuer dich von
Rails erzeugt werden. Hier machst du einfach dein eigenes.

So, ich hab’s kapiert. Es funktioniert.

Danke!

Am 10.01.2008 um 08:54 schrieb Urban H.:

Ganz einfach. Wenn die Methoden date_str und date_str= (aus meinem
obigen Beispiel) in deinem Model definiert sind ersetzt du einfach im
View alle Vorkommen des date Attributs mit diesem neuen “Attribut”.
Letztendlich gibt es in deiner Model Klasse ja auch nur Methoden fuer
all deine Felder in der Datenbank, die halt automatisch fuer dich von
Rails erzeugt werden. Hier machst du einfach dein eigenes.

Also das mit date_str (bzw wohl created_at in den meisten Fällen)
lass mal
lieber sein. Das gibt nämlich sehr schnell Ärger.

Es ist besser wenn man zum Beispiel
ActiveSupport::CoreExtensions::Time::Conversions.DATE_FORMATS
überschreibt und dann die to_date bzw to_formatted_s Methoden verwendet.
config/environment.rb ist der richtige Platz dafür und wahrscheinlich
wird das hier auch nützen:

Date::MONTHNAMES = [nil] + %w(Jänner Feber März April Mai Juni Juli
August September Oktober November Dezember)
Date::DAYNAMES = %w(Sonntag Montag Dienstag Mittwoch Donnerstag
Freitag Samstag)

ciao, tom


Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
(NEW)
just a geek trying to change the world
Skype: TomK32 || Mail: [email protected]