2012-12-14 56 views
0

我有一个在Rails中工作的Fullcalendar。我还为事件表和模式添加了额外的字段以获取用户输入。保存记录时,它会自动将当前用户的user_id保存在事件表中。Rails Fullcalendar:为源url添加自定义参数

我想让日历只显示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 } 

谢谢!

回答

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]传递给index操作,这可能是你的情况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 
+0

谢谢!还有一个问题。如何在咖啡脚本'eventSources中传递参数:[/ url]',' }],' – Reddirt

+0

我更新了我的答案,这是一个选项''data'' – MrYoshiji

+0

再次感谢!!!! – Reddirt