Ruby Forum Rails Germany > String in Datum wandeln

Posted by Holger Hänisch (ortwin)
on 29.04.2008 13:12
Hallo,

hab schon viel gesucht aber nicht das Richtige gefunden.

Ich uebergebe vom View an den Controller einen Wert der nichts mit einer
Datenbank oder Modell zu tun hat:

Parameters: {"authenticity_token"=>"xxx", "action"=>"datum",
"controller"=>"mitarbeiters", "datum_jetzt"=>"2008-04-29"}

Ich moechte diesen String? datum_jetzt in ein Date Objekt umwandeln um
"+ 1.day" zu rechnen. Bekomme dann diese Fehlermeldung:

undefined method `+' for :datum_jetzt:Symbol

Wie kann ich mit dem uebergebenen Wert vom View weiterarbeiten? Ist er
als String ":datum_jetzt" im Controller?

Danke fuer die Hilfe

Holger
Posted by Malte Beran (Guest)
on 29.04.2008 13:18
(Received via mailing list)
Hi Holger


datum_jetzt.to_time + 1.day

gruß Malte

Holger Hänisch schrieb:
Posted by Holger Hänisch (ortwin)
on 29.04.2008 13:23
Malte Beran wrote:
> Hi Holger
> 
> 
> datum_jetzt.to_time + 1.day
> 
> gruß Malte
> 
> Holger Hänisch schrieb:

Das ist es leider noch nicht. Selbe Fehlermeldung. Ich habe aber so den 
Verdacht, dass ich was grundsaetzliches nicht verstanden habe. Der 
Controller sieht so aus:

def datum

    @datum = :datum_jetzt.to_time
    @datum = @datum + 1.day
    ....
end

Holger
Posted by Malte Beran (Guest)
on 29.04.2008 13:30
(Received via mailing list)
Hi Holger,
du musst das auf die variable anwenden und nicht auf ein Symbol!!!!
Also so:

def datum
   @datum = datum_jetzt.to_time + 1.day
end

Vorrausgesetzt die var heisst datum_jetzt!

Malte

Holger Hänisch schrieb:
Posted by Guido Pesch (Guest)
on 29.04.2008 13:31
(Received via mailing list)
Hi,
schau mal hier http://www.ruby-doc.org/core/classes/Date.html


parse(str='-4712-01-01', comp=false, sg=ITALY)

Create a new Date object by parsing from a String, without specifying 
the
format.

str is a String holding a date representation. comp specifies whether to
interpret 2-digit years as 19XX (>= 69) or 20XX (< 69); the default is 
not to.
The method will attempt to parse a date from the String using various
heuristics; see _parse in date/format.rb for more details. If parsing 
fails, an
ArgumentError will be raised.

The default str is ’-4712-01-01’; this is Julian Day Number day 0.

sg specifies the Day of Calendar Reform.

oder

strptime(str='-4712-01-01', fmt='%F', sg=ITALY)

Create a new Date object by parsing from a String according to a 
specified
format.

str is a String holding a date representation. fmt is the format that 
the date
is in. See date/format.rb for details on supported formats.

The default str is ’-4712-01-01’, and the default fmt is ’%F’, which 
means
Year-Month-Day_of_Month. This gives Julian Day Number day 0.

sg specifies the Day of Calendar Reform.

An ArgumentError will be raised if str cannot be parsed.

Gruß 

Zitat von Holger Hänisch <lists@ruby-forum.com>:
Posted by David A. Black (Guest)
on 29.04.2008 13:33
(Received via mailing list)
Hi --

On Tue, 29 Apr 2008, Holger Hänisch wrote:

> Das ist es leider noch nicht. Selbe Fehlermeldung. Ich habe aber so den
> Verdacht, dass ich was grundsaetzliches nicht verstanden habe. Der
> Controller sieht so aus:
>
> def datum
>
>    @datum = :datum_jetzt.to_time
>    @datum = @datum + 1.day
>    ....
> end

@datum = Time.parse(params[:datum_jetzt]) + 1.day

Das Grundsaetzliche daran ist, dass die jeweilige Params dem
Controller innerhalb des Params-hash geliefert werden -- bzw. dass man
den rohen String ein bisschen kochen muss :-)


David
Posted by David A. Black (Guest)
on 29.04.2008 13:37
(Received via mailing list)
Hi --

On Tue, 29 Apr 2008, David A. Black wrote:

>>> gruß Malte
>>    @datum = @datum + 1.day
>>    ....
>> end
>
> @datum = Time.parse(params[:datum_jetzt]) + 1.day

Hmmm... eigentlich ist:

   params[:datum_jetzt].to_time + 1.day

deinem Original ein bisschen aehnlicher (und kurzer dazu :-)
Hauptsache ist der Params-hash.


David
Posted by Holger Hänisch (ortwin)
on 29.04.2008 13:58
David A. Black wrote:
> Hi --
> 
> On Tue, 29 Apr 2008, David A. Black wrote:
> 
>>>> gruß Malte
>>>    @datum = @datum + 1.day
>>>    ....
>>> end
>>
>> @datum = Time.parse(params[:datum_jetzt]) + 1.day
> 
> Hmmm... eigentlich ist:
> 
>    params[:datum_jetzt].to_time + 1.day
> 
> deinem Original ein bisschen aehnlicher (und kurzer dazu :-)
> Hauptsache ist der Params-hash.
> 
> 
> David

Danke David, das geht sehr gut. Jetzt habe ich auch wieder was 
"Grundsaetzliches" verstanden.

Holger