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.