【问题标题】:fullcalendar-rails transfer user id through javascriptfullcalendar-rails 通过 javascript 传输用户 ID
【发布时间】:2015-02-06 05:00:37
【问题描述】:

我有一个问题,我正在使用 fullcalendar-rails 构建日历,但我遇到了一个小问题。我正在使用 eventsources 函数(url 参数),因此日历知道在哪里检索要显示的事件。但是我的事件资源嵌套在我的用户资源下。因此,要访问事件,我需要遵循这条路线 -> 'users/:id/events'。所以我的问题是如何将这些必需的参数传输到 eventsources :url 函数?另外,我只想提一下我正在使用 json,因此日历可能能够显示事件。在我的 json 数组中,我有一个 url 参数,其中包含事件的 url 有没有办法让我传输那个 json.url ?

抱歉,我还没有显示我的任何代码,但我现在正在工作,我无法访问它。只要访问电脑,我就会重新编辑它并显示我的代码。它困扰了我这么久,所以我认为我只是先问一下。

提前致谢。

calendar.js.coffee

$(document).ready ->
  $('#calendar').fullCalendar
   editable: true,
   header:
   left: 'prev,next today',
   center: 'title',
   right: 'month,agendaWeek,agendaDay'
   defaultView: 'month',
   height: 500,
   slotMinutes: 30,

eventSources: url: "/events.json" <----This is the part that where the calendar reads the events from but i need it to be 'users/:id/events.json'

timeFormat: 'H(:mm) ',
dragOpacity: "0.5",

displayEventEnd: 
    month: true,
    basicWeek: true

eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) ->
  updateEvent(event);

eventResize: (event, dayDelta, minuteDelta, revertFunc) ->
  updateEvent(event);


updateEvent = (the_event) ->
 $.update "/events/" + the_event.id,
   event:
     title: the_event.title,
     starts_at: "" + the_event.start,
     ends_at: "" + the_event.end,
     description: the_event.description

routes.rb

Rails.application.routes.draw do
  get 'staticpages/welcome'
  get 'staticpages/about'
  get 'staticpages/contact'
  get 'calendar/index'

  root 'staticpages#welcome'

  devise_for :users

  resources :users, :only => [:show] do
    member do
      resources :events, :as => :user_events
    end
  end

index.json.jbuilber

json.array!(@events) do |event|
json.extract! event, :id, :title, :description
json.start event.starts_at
json.end event.ends_at
json.allday event.all_day
json.url event_url(event, format: :html)
end

【问题讨论】:

  • 您想显示所有事件还是特定于 current_user 的事件?任何人都可以访问每个活动吗?
  • 不,我只想显示当前登录用户的事件。
  • 好的,你可以在你的url中使用current_user.id,对吧?
  • 你可以试试
  • 嘿,我现在已经添加了我的代码,正如您在 (calendar.js) 中看到的那样,我正在尝试将带有正确 :id 参数的 url 发送到 javascript 中。但是事件源采用的 url 是一个字符串。所以,我想知道是否可以将我的 json.url 从日历发送到 evenSources,因为它实际上包含带有正确 :id 参数的 url 字符串。如果不是,那么正确的做法是什么?谢谢。

标签: javascript ruby-on-rails ruby json fullcalendar


【解决方案1】:

我想通了。

添加一个名为“Gon”的宝石。

在您的用户控制器中,添加一个变量以获取 URL,例如:

@users_path = "users/#{current_user}/events.json"

您可以更改 user.id 的 current_user

然后,添加以下内容:

gon.user_path = @users_path

在您的 FullCalendar JavaScript 中。执行以下操作:

$(document).on('turbolinks:load', function() {
    var user_path = gon.user_path;

    $('#calendar').fullCalendar({
        events: user_path,
    });
});

就是这样。它会按照你的意愿呈现。

【讨论】:

    猜你喜欢
    • 2015-08-19
    • 2018-07-09
    • 2011-04-17
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多