簡體   English   中英

rails4從fullcalendar(3rd party API)訪問控制器中的參數

[英]rails4 accessing params in controller from fullcalendar (3rd party API)

我有一個rails4應用程序,我正在嘗試將其與fullcalendar集成。 為了僅從db中獲取顯示的事件,我嘗試將params['start']params['end]用於我的between_time范圍。 如果我檢查開始和結束參數的值,則控制台會顯示該值為nil。 這很奇怪,因為在日志中我可以看到他們的json請求。 那為什么是零呢? 我應該怎么做才能在我的示波器上使用它們?

控制者

@user = current_user
@event = Event.new
@events = Event.allevents(current_user).between_time(params['start'], params['end']) if (params['start'] && params['end'])
respond_to do |format|
  format.html
  format.json { render: @events }
end

登錄服務器

Started GET "/users/1/events" for ::1 at 2016-01-02 15:05:31 -0800
15:05:31 puma.1       | Processing by EventsController#index as HTML
15:05:31 puma.1       |   Parameters: {"user_id"=>"1"}

Started GET "/users/1/events?start=2015-12-27&end=2016-01-03&_=1451775933354" for ::1 at 2016-01-02 15:05:34 -0800
15:05:34 puma.1       | Processing by EventsController#index as JSON
15:05:34 puma.1       |   Parameters: {"start"=>"2015-12-27", "end"=>"2016-01-03", "_"=>"1451775933354", "user_id"=>"1"}

以下代碼是我檢查過的示例應用程序。 在這段代碼中,參數似乎正常工作。 在獲取參數方面,與我的代碼相比,我看不出有什么區別。

def get_events
  start_time = Time.at(params[:start].to_i).to_formatted_s(:db)
  end_time   = Time.at(params[:end].to_i).to_formatted_s(:db)

  @events = Event.where('
              (starttime >= :start_time and endtime <= :end_time) or
              (starttime >= :start_time and endtime > :end_time and starttime <= :end_time) or
              (starttime <= :start_time and endtime >= :start_time and endtime <= :end_time) or
              (starttime <= :start_time and endtime > :end_time)',
              start_time: start_time, end_time: end_time)
  events = []
  @events.each do |event|
    events << { id: event.id,
                title: event.title,
                description: event.description || '', 
                start: event.starttime.iso8601,
                end: event.endtime.iso8601,
                allDay: event.all_day,
                recurring: (event.event_series_id) ? true : false }
  end
  render json: events.to_json
end

當它們實際上是字符串時,您正在嘗試將它們作為符號訪問

params[:start]

需要替換為

params["start"]

得到它的工作。 我忘記了這些參數只有在HTML加載后fullcalendar發送AJAX請求時才可用。 我的問題是日期/時間格式。 Time.at(params['start'].to_i).to_formatted_s(:db)對我不起作用。 我不知道為什么,也許全日歷API已更改。 發送過來的當前格式是Parameters: {"start"=>"2015-12-27"..... ,所以我將代碼更改為params['start'].to_datetime.to_formatted_s(:db)和現在正在工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM