Rails Fullcalendar:将自定义参数添加到源URL

时间:2012-12-14 17:54:06

标签: ruby-on-rails fullcalendar

我在Rails中使用Fullcalendar。我还在事件表中添加了额外的字段,并获得了用户输入的模态。保存记录后,它会自动将当前用户的user_id保存在事件表中。

我希望日历只显示current_user的事件。

现在,calendar.js.coffee文件用于获取事件数据:

   eventSources: [{
  url: '/events',
}],

如何修复它以便只显示current_user的事件数据? 我在事件控制器中放了一些代码吗?或咖啡代码中的某些内容?

我应该在控制器的json部分添加一些选择代码吗?

  class EventsController < ApplicationController
  # GET /events
  # GET /events.json
  def index
    @events = Event.scoped
    @events = Event.between(params['start'], params['end']) if  (params['start'] && params['end'])
   respond_to do |format|
  format.html # index.html.erb
  format.json { render :json => @events }
  end
end

以下似乎不起作用:

      format.json { render :json => @events, :user_id => current_user.id }

感谢!!!

1 个答案:

答案 0 :(得分:0)

你是正确的方式;)在事件模型中使用范围(我将其命名为for_user,我可以在需要时发布有关此范围的代码)以检索特定用户的事件。

def index
  @events = Event.scoped
  @events = @events.between(params['start'], params['end']) if  (params['start'] && params['end'])
  @events = @events.for_user(params[:user_id]) if params[:user_id].present?
  respond_to do |format|
    format.html # index.html.erb
    format.json { render :json => @events }
  end
end

现在您需要将params[:user_id]传递给索引操作,在您的情况下可能是current_user.id;)

eventSources: [{
  url: '/events',
  data: { user_id: current_user.id }
}],

警告:安全问题

执行此操作可让您将任何user_id放入URL并查看其他用户的数据。添加索引操作的验证,以确保您只能访问current_user的数据:

@events = @events.for_user(params[:user_id]) if params[:user_id].present? && params[:user_id] == current_user.id