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?

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 <javascript:>> 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.**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/-/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.
>>
>> To post to this group, send email to datam...@googlegroups.com<javascript:>
>> .
>> To unsubscribe from this group, send email to 
>> datamapper+...@googlegroups.com <javascript:>.
>> 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 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.

Reply via email to