Nuby - about date_select, getting into DB

Hello Everyone,

I am trying to use the date_select() form helper method per AWDWROR.
In
the DB the column “entry_date” is a datetime.

So using the below form, in part

============ app/views/entry/index.rhtml ===

date <%= date_select("entry_date", :start) %>

how do I get it into the AR instance?

============ app/controllers/EntryController.rb =======
def create
@entry = Entry.new(
:entry_date => params[:entry_date][“start”],
:task_id => params[:task][:id],
:description => params[:description]
);
end

This gives me “entry_date cannot be null” from mysql.

The backtrace/debug dump on the error page mentioned that
Parameters: …
“entry_date”=>{“start(1i)”=>“2007”, “start(2i)”=>“4”,
“start(3i)”=>“25”}

where did that (1i), (2i) stuff come from? what does it mean?

In any case I was hoping to use a DHTML calendar pop-up for this date
entry, but wanted to get this working for the prototype. So if you
can
help I appeciate it

thanks
Sam

----- View

Editing book

<%= error_messages_for :book %>

<% form_for(:book, :url => book_path(@book), :html => { :method
=> :put }) do |f| %>

Created at
<%= f.datetime_select :created_at %>

Title
<%= f.text_field :title %>

... ... ...

<%= submit_tag "Update" %>

<% end %>

<%= link_to ‘Show’, book_path(@book) %> |
<%= link_to ‘Back’, books_path %>

---- Controller

POST /books

POST /books.xml

def create
@book = Book.new(params[:book])

respond_to do |format|
  if @book.save
    flash[:notice] = 'Book was successfully created.'
    format.html { redirect_to book_url(@book) }
    format.xml  { head :created, :location => book_url(@book) }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @book.errors.to_xml }
  end
end

end

P.S. If you would prefer to let Rails completely handle the entry_date
for you just change the name of the column in the DB to created_at
(for datetime) or created_on (for date). Then you can remove the
date_select entirely from the form and Rails will automatically set
the field to the current date and time when the record is created.
You can also use updated_on and updated_at to create auto updating
date and time stamps.

Thanks - maybe I should state the bigger picture of what I am trying
to do - its basically an event logger. Really this is pretty simple
but I am new at Ruby and Rails so life is hard now.

So users can choose a date on which the event occurred, that is taken
care of my the date_select field (for now)

then they need to choose a start and end time within that date. So for
this I am using text fields because its easier for them to type. But
in the DB I would like to save these as timestamp fields because there
is going to be a lot of reporting and statistics that goes on based on
the data.

So in the DB I have

mysql> desc entries;

| entry_date | date | NO | |
| |
| start_time | timestamp | YES | | NULL
| |
| end_time | timestamp | YES | | NULL
| |

and in the controller, I am getting the entry_date in OK as you
indicated. But to get a timestamp for the start_time and end_time, I
need to

  1. get the date from params[:entry_date] as a Date object (I think) at
    time 00:00?
  2. add the given hours and minutes to the Date
  3. convert that to a unix_timestamp which mySQL will be happy with

so far I am stuck on step 1 :wink:

step 3 might not be needed, I’m not sure yet.

Any pointers? how would the seasoned pro go about this?

thanks
Sam

Any pointers? how would the seasoned pro go about this?

Well, a seasoned pro would likely use a JavaScript/DHTML date and time
picker with all the fancy bells and whistles. Then use it’s resulting
date string representation to parse into a Ruby Time object. That is
if they choose not to use the build in date time selectors Rails
provides.

On Thursday 26 April 2007, Robert W. wrote:

Any pointers? how would the seasoned pro go about this?

Well, a seasoned pro would likely use a JavaScript/DHTML date and time
picker with all the fancy bells and whistles. Then use it’s resulting
date string representation to parse into a Ruby Time object. That is
if they choose not to use the build in date time selectors Rails
provides.

well I was going to use a DHTML timepicker widget but thought
prototyping with this would be easier. But I have since found out, not
so much.

my current creation looks like this for the curious:
http://pastecode.com/28881

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs