2012-12-14 3 views
0

레일에서 Fullcalendar를 사용하고 있습니다. 이벤트 테이블에 추가 필드를 추가하고 사용자 입력을받는 모달을 추가했습니다. 레코드가 저장되면 자동으로 현재 사용자의 user_id가 이벤트 테이블에 저장됩니다.레일 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이라는 이름으로 지정하고이 범위에 대한 코드를 게시 할 수 있습니다). 보안 문제

을 드릴 것입니다 이렇게 :)

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

경고,

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 

이제 귀하의 경우 current_user.id이 될 수 인덱스 조치에 params[:user_id]을 통과해야 URL에 user_id를 넣고 다른 사용자의 데이터를 볼 수 있어야합니다. current_user의 데이터에만 액세스 할 수 있도록 색인 작업에 대한 확인을 추가하십시오.

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

감사합니다! 한 가지 더 묻습니다. 어떻게 커피 스크립트'eventSources에서 PARAM 전달하지 : [{ URL : '/ 이벤트', }]'내 대답을 업데이트 – Reddirt

+0

, 그것은 옵션 ''data''다시 – MrYoshiji

+0

감사의를 !!!! – Reddirt

관련 문제