0

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 }

ありがとう!!!

4

1 に答える 1

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 }
}],

警告:セキュリティの問題

これを行うと、URLに任意のuser_idを入れて、他のユーザーのデータを表示できるようになります。インデックスアクションに検証を追加して、current_userのデータにのみアクセスできることを確認します。

@events = @events.for_user(params[:user_id]) if params[:user_id].present? && params[:user_id] == current_user.id
于 2012-12-14T18:39:42.283 に答える