我在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 }
感谢!!!
答案 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