Hi Daz,

On 9 October 2012 22:04, DAZ <daz4...@gmail.com> wrote:

> Thanks for the reply Ben,
>
> I'd suggest:
>> def released_on=date
>>   super(Date.parse(date).**iso8601)
>> end
>
>
> that certainly looks more elegant, but I get an 'invalid date' argument
> error for that if I try to enter the date in the format "10/09/2012", any
> ideas?
>
>
On an older ruby version? Try Date.strptime [0] or even better if you're
trying to parse natural dates as well - the chronic gem [1]

[0]
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-c-strptime
[1] https://github.com/mojombo/chronic

Cheers,
Ben


> cheers,
>
> DAZ
>
>
>
> On Tuesday, October 9, 2012 9:17:07 PM UTC+1, benlovell wrote:
>
>> Hi Daz,
>>
>> On 9 October 2012 20:58, DAZ <daz...@gmail.com> wrote:
>>
>>> Hi Ben,
>>>
>>> Thanks for the reply. This is what I thought was the case, but I just
>>> wondered if there were any nice DM methods that I didn't know about that
>>> parsed strings in a certain format, ready to insert into the database as a
>>> Date object.
>>>
>>> I've found that the jQuery datepicker gives the date in this format
>>> 10/09/2012, so I have added the following method to the Song class to
>>> change it into a Date object:
>>>
>>>   def released_on=date
>>>     dates = date.split('/').map{ |s| s.to_i }
>>>     super(Date.new(dates[2],dates[**0],dates[1]))
>>>   end
>>>
>>
>>
>>
>> Cheers,
>> Ben
>>
>>
>>>
>>> Not sure if that's the best way of doing it, but it certainly works!
>>>
>>> thanks for the help and feedback!
>>>
>>> DAZ
>>>
>>>
>>> On Tuesday, October 9, 2012 8:14:23 PM UTC+1, benlovell wrote:
>>>
>>>> On 9 October 2012 19:48, DAZ <daz...@gmail.com> wrote:
>>>>
>>>>> Thanks for the reply Ben.
>>>>>
>>>>> I think my question is more to do with DataMapper, because DataMapper
>>>>> requires the format to be a Date or DateTime object. My question is how I
>>>>> change what is effectively a string in the params hash into a date object
>>>>> in a neat way. Even if I used a date picker, I would assume that it sends
>>>>> some sort of string to the server rather than an actual Date object?
>>>>>
>>>>>
>>>> In your example form you have three separate fields which you need to
>>>> parse into a valid Date. You cannot expect DM to do this on your behalf nor
>>>> should you. DM resources can parse date strings as properties of course,
>>>> but you need to massage your params to get the date into an acceptable
>>>>  format. My point was that this would be a responsibility of your web
>>>> framework or front-end not DM.
>>>>
>>>> A similar example of this is the DateHelper.date_select in rails which
>>>> does some hocus pocus with param suffixes and Date::civil to get the values
>>>> from the three options into a proper date that AR can understand.
>>>>
>>>> Cheers,
>>>> Ben
>>>>
>>>>
>>>>> Hope that clarifies my question - is there a neat way of converting
>>>>> dates to Date objects or is there just some donkey work that needs doing
>>>>> before creating the resource?
>>>>>
>>>>> cheers,
>>>>>
>>>>> DAZ
>>>>>
>>>>>
>>>>>
>>>>> On Sunday, October 7, 2012 2:07:30 PM UTC+1, benlovell wrote:
>>>>>
>>>>>> I think this question would be better served in whichever list
>>>>>> pertains to your chosen web framework (Sinatra I suspect?) but the simple
>>>>>> answer is to use one of the many available date pickers.
>>>>>>
>>>>>> http://trentrichardson.com/**exa****mples/timepicker/<http://trentrichardson.com/examples/timepicker/>
>>>>>>
>>>>>> Regards,
>>>>>> Ben
>>>>>>
>>>>>> Sent from my iPhone
>>>>>>
>>>>>> On 7 Oct 2012, at 11:48, DAZ <daz...@gmail.com> wrote:
>>>>>>
>>>>>> I have a Song class that looks like this:
>>>>>>
>>>>>>   class Song
>>>>>>     include DataMapper::Resource
>>>>>>     property :id, Serial
>>>>>>     property :title, String
>>>>>>     property :lyrics, Text
>>>>>>     property :length, Integer
>>>>>>     property :released_on, Date
>>>>>>   end
>>>>>>
>>>>>> Here's my form for creating it:
>>>>>>
>>>>>>   <form action="/songs" method="POST">
>>>>>>     <input id="title" name="song[title]" type="text" />
>>>>>>     <input id="length" name="song[length]" type="number" />
>>>>>>     <input id="day" max="31" min="1" name="day" type="number" />
>>>>>>     <input id="month" max="12" min="1" name="month" type="number" />
>>>>>>     <input id="year" max="1998" min="1940" name="year" type="number"
>>>>>> />
>>>>>>     <textarea id="lyrics" name="song[lyrics]"></**textarea****>
>>>>>>     <input type="submit" value="Save Song" />
>>>>>>   </form>
>>>>>>
>>>>>> I want to be able to create a new song resource by using
>>>>>>
>>>>>>   song = Song.create(params[:song])
>>>>>>
>>>>>> The problem I'm having is with the released_on property, since it
>>>>>> needs to be a Date object.
>>>>>>
>>>>>> At the moment, I am doing this:
>>>>>>
>>>>>>   date = Date.new(params[:year].to_i,**pa****
>>>>>> rams[:month].to_i,params[:**day]****.to_i)
>>>>>>   song = Song.create(params[:song].**merg****e(released_on: date))
>>>>>>
>>>>>> Does anybody know any nicer ways of entering a date into a form and
>>>>>> being able to simply call Song.create(params[:song]) without having to
>>>>>> manipulate the form parameters first?
>>>>>>
>>>>>> cheers,
>>>>>>
>>>>>> DAZ
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "DataMapper" group.
>>>>>> To view this discussion on the web visit https://groups.google.com/d/
>>>>>> **ms****g/datamapper/-/OOhRt2vQKNEJ<https://groups.google.com/d/msg/datamapper/-/OOhRt2vQKNEJ>
>>>>>> .
>>>>>> To post to this group, send email to datam...@googlegroups.com.
>>>>>> To unsubscribe from this group, send email to datamapper+...@**
>>>>>> googlegroups.**co**m.
>>>>>>
>>>>>> For more options, visit this group at http://groups.google.com/**
>>>>>> group****/datamapper?hl=en<http://groups.google.com/group/datamapper?hl=en>
>>>>>> .
>>>>>>
>>>>>>  --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "DataMapper" group.
>>>>> To view this discussion on the web visit https://groups.google.com/d/*
>>>>> *ms**g/datamapper/-/6zgiTuxv7zwJ<https://groups.google.com/d/msg/datamapper/-/6zgiTuxv7zwJ>
>>>>> .
>>>>>
>>>>> To post to this group, send email to datam...@googlegroups.com.
>>>>> To unsubscribe from this group, send email to datamapper+...@**
>>>>> googlegroups.**com.
>>>>> For more options, visit this group at http://groups.google.com/**group
>>>>> **/datamapper?hl=en <http://groups.google.com/group/datamapper?hl=en>.
>>>>>
>>>>
>>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "DataMapper" group.
>>> To view this discussion on the web visit https://groups.google.com/d/**
>>> msg/datamapper/-/jKlzyXpXcVMJ<https://groups.google.com/d/msg/datamapper/-/jKlzyXpXcVMJ>
>>> .
>>>
>>> To post to this group, send email to datam...@googlegroups.com.
>>> To unsubscribe from this group, send email to datamapper+...@**
>>> googlegroups.com.
>>> For more options, visit this group at http://groups.google.com/**
>>> group/datamapper?hl=en <http://groups.google.com/group/datamapper?hl=en>
>>> .
>>>
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "DataMapper" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/datamapper/-/PdSYABOhqw8J.
>
> To post to this group, send email to datamapper@googlegroups.com.
> To unsubscribe from this group, send email to
> datamapper+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/datamapper?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to datamapper@googlegroups.com.
To unsubscribe from this group, send email to 
datamapper+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en.

Reply via email to