因此,我根據這個教程來構建
。https://www.driftingruby.com/episodes/fullcalendar-events-and-scheduling
在該教程中,有一個事件表。
create_table "events"/span>, force: :cascade do|t|
t.string "title">"start"
t.datetime "結束"string "color"/span>
t.datetime "created_at", null: false。
t.datetime "update_at", null: false "update_at".
end: end
現在對于我的應用程式,我有一個本地資料庫,在一個任務表中的資料是這樣的(注意兩個 "時間 "列。 我將在最后回到這些)
create_table "assignments"/span>, force: :cascade do |t|
t.integer "shift_id"
t.整數 "contact_id"
t.時間 "start_time"/span>
t.時間 "end_time"/span>
t.datetime "updated_at"end
當在兩個應用程式上檢查我的json輸出時,我可以看到 "開始 "和 "結束 "的值是匹配的
在兩個應用程式的控制器中為輸出設定一個限制(20)。我的app:
class AssignmentsController < ApplicationController
before_action :set_assignment, only: [: 顯示, :編輯, :更新, :銷毀]
# GET /assignments 或 /assignments.json
def index
@assignments = Assignment.limit(20)
# @assignments = Assignment.where(start_time: params[:start_time].params[:end_time])
end。
...
end
教程
class EventsController < ApplicationController
before_action :set_event, only: [: 顯示, :編輯, :更新, :銷毀]
def index>>
@events = Event.limit(20)
# @events = Event.where(start: params[:start].params[:end])
end
...
end
輸出片段
我的應用程式。
[{"id":191330,"title":"Sandbox","start"。 "2000-01-01T12:00:00","end": "2000-01-01T16:00:00","allDay":false,"update_url":"/assignments/191330? method=patch","edit_url"/span>:"/assignments/191330/edit"}。
的教程。
[{"id":1,"title":"Tender Is the Night","start"。 "2024-03-18T13:48:29","end": "2024-03-18T22:48:41","color":"black","allDay"。 false,"update_url"/span>:"/events/1? method=patch"/span>,"edit_url"/span>:"/events/1/edit"}。
現在......當我關閉兩者的limit(20)并運行where行時......
我的app:
class AssignmentsController < ApplicationController
before_action :set_assignment, only: [: 顯示, :編輯, :更新, :銷毀]
# GET /assignments 或 /assignments.json
def index
# @assignments = Assignment.limit(20)
@assignments = Assignment.where(start_time: params[:start_time] ...params[:end_time])
end
...
end
教程
class EventsController < ApplicationController
before_action :set_event, only: [: 顯示, :編輯, :更新, :銷毀]
def index
# @events = Event.limit(20)
@events = Event.where(start: params[:start]...params[:end] )
end].
...
end end
然后輸入這個教程應用的網址
http:/span>//localhost:3000/events.json? start=2021-01-01T12:00。 00&end=2021-0110T12。 00:00
而我的應用程式的這個網址
http:/localhost:4000/assignments.json? start_time=2001-01-01T12:00:00& end_time=2021-01-10T12:00:00
教程中的應用程式顯示正常,但是 在我的應用程式中,我得到這個錯誤...
PG::InvalidDatetimeFormat: ERROR: invalid input syntax for type time: "2001-01-01T12:00:00"
: SELECT "assignments".* FROM "assignments" WHERE ( "assignments". "start_time" BETWEEN $1 AND $2)
"時間 "是兩個應用程式之間模型的唯一區別
我錯過了什么? 時間的正確語法是什么?謝謝您的幫助。
謝謝你的時間。(雙關語不是故意的)
uj5u.com熱心網友回復:
你將start_time宣告為一個t.time,在PostgreSQL中,這將是time(HH:MM:SS)的型別,但是你傳入一個(PostgreSQL)資料時間值2001-01-01T12:00:00和2021-01-10T12:00:00。 你可能想把assignments.start_time的型別從time改為datetime。 如果你真的想要時間值,那么你就需要在這種情況下傳遞可能的空區間...?start_time=12:00:00&end_time=12:00:00。
另外,你有名為start_time和end_time的列以及相同名稱的查詢引數,但查詢引數end_time指的是start_time列的上限(與end_time列無關),這真的很令人困惑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/322766.html
標籤:
