Rất mới đối với Ruby và tôi đã bị kẹt hàng giờ liền. Tìm kiếm ở khắp mọi nơi và không thể tìm thấy câu trả lời.Chuyển đổi chuỗi thành ngày trước khi lưu với Rails
Vì vậy, tôi đang sử dụng công cụ datepicker khởi động cho đá quý ray.
Vì tôi đã thay đổi định dạng ngày của datepicker, nó sẽ không lưu trữ trong DB. Đoán điều này là do đầu vào simple_form đang được sử dụng như một chuỗi để tránh các đầu vào lựa chọn ngày mặc định được áp dụng bởi simple_form.
Câu hỏi của tôi là: Làm cách nào để sửa đổi/chuyển đổi chuỗi như "06/18/2013" thành ngày trước khi được lưu vào db? Điều này có được xử lý tốt nhất bởi bộ điều khiển không?
điều khiển của tôi:
# PUT /events/1
# PUT /events/1.json
def update
@event = Event.find(params[:id])
# Ugghhhh I need help
# @event.event_date = Date.parse(params[:event_date]).to_date
respond_to do |format|
if @event.update_attributes(params[:event])
format.html { redirect_to @event, :notice => 'Event was successfully updated.' }
format.json { head :no_content }
else
format.html { render :action => "edit" }
format.json { render :json => @event.errors, :status => :unprocessable_entity }
end
end
end
DB Schema:
create_table "events", :force => true do |t|
t.string "event_name"
t.string "event_location"
t.date "event_date"
t.time "event_time"
t.text "event_content"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "user_id"
t.boolean "approved", :default => true
t.integer "category_id"
end
Đây là nhật ký máy chủ:
Started PUT "/events/1" for 127.0.0.1 at 2013-06-14 02:37:15 -0700
Processing by EventsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"RYMdJ0lFmvG0+nVIsTtJXu5fyD/L3/WAKsk9FX6WWgo=", "event"=>{"user_id"=>"1", "category_id"=>"3", "event_name"=>"A Event Name", "event_location"=>"Event Location", "event_date"=>"06/13/2013", "event_time(1i)"=>"2000", "event_time(2i)"=>"1", "event_time(3i)"=>"1", "event_time(4i)"=>"02", "event_time(5i)"=>"18", "event_content"=>"First night"}, "commit"=>"Update Event", "id"=>"1"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Event Load (0.1ms) SELECT "events".* FROM "events" WHERE "events"."id" = ? LIMIT 1 [["id", "1"]]
(0.0ms) begin transaction
(0.0ms) commit transaction
Redirected to http://localhost:3000/events/1
Completed 302 Found in 4ms (ActiveRecord: 0.3ms)
Tôi chỉ đề nghị bạn có thể thay đổi tên trường, không cần thiết để gọi thuộc tính Event event_name, event_location, event _... –
Yea, đã đồng ý. Cảm ơn vì tiền hỗ trợ. –