0

Ich versuche, FullCalendar in meine Rails App zu integrieren. Aber ich habe Probleme mit dem Speichern nach dem Ziehen und Ablegen.Vollkalender: ActiveRecord :: RecordNotFound (Event konnte nicht gefunden werden mit 'id' = update)

Ich habe 2 Modelle - Event und Training. Unter dem Ereignis gibt es Training.

Ich bin in der Lage, den vollständigen Kalender zu starten und zu speichern und Ereignisse zu speichern, aber wenn ich Drag & Drop und dann aktualisieren, werden die Ereignisse auf ihre ursprüngliche Zeit zurückgesetzt.

In meiner Konsole, heißt es:

nicht Ereignis finden kann mit 'id' = update.

Wenn die Ereignisse über ein Formular erstellt und gespeichert werden, werden sie ordnungsgemäß im Kalender angezeigt und gespeichert. Es ist nur, wenn ich versuche, zu ziehen und zu fallen.

Hier ist mein Event-Controller.

class EventsController < ApplicationController 
    before_action :set_event, only: [:show, :edit, :update, :destroy] 
    before_action :authenticate_user! 

    def index 
    @events = current_user.events 
    end 

    def show 
    @event = Event.find(params[:id]) 
    end 

    def new 
    @event = current_user.events.new 
    end 

    def edit 
    @event = current_user.events.find(params[:id]) 
    end 

    def create 
    @event = current_user.events.new(event_params) 

    respond_to do |format| 
     if @event.save 
     format.html { redirect_to @event, notice: 'Event was successfully created.' } 
     format.json { render :show, status: :created, location: @event } 
     else 
     format.html { render :new } 
     format.json { render json: @event.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def update 
    respond_to do |format| 
     if @event.update(event_params) 
     format.html { redirect_to @event, notice: 'Event was successfully updated.' } 
     format.json { render :show, status: :ok, location: @event } 
     else 
     format.html { render :edit } 
     format.json { render json: @event.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def destroy 
    @event.destroy 
    respond_to do |format| 
     format.html { redirect_to events_url, notice: 'Event was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_event 
    @event = Event.find(params[:id]) 
    end 

    def event_params 
    params.require(:event).permit(:title, :description, :start_time, :end_time, :workouts_attributes => [:id, :name, :category, :_destroy]) 
    end 
end 

Unten ist application.js Datei, die den Kalender steuert.

$(document).on('turbolinks:load', function() { 
    $('#calendar').fullCalendar({ 
     editable: true, 
     events: '/events.json', 
     eventDrop: function(event, delta) { 
     $.ajax({ 
      type: "PUT", 
      url: '/events/update', 
      dataType: 'json', 
      data: {id:event.id, start:event.start_time, end: event.end_time} 
     }); 
     }, 
    }); 
}); 

Wenn ich versuche, per Drag & Drop, erhalte ich eine Meldung unter:

ActiveRecord::RecordNotFound (Couldn't find Event with 'id'=update): 
    app/controllers/events_controller.rb:74:in `set_event' 

Wenn ich meine Konsole überprüfen, alle Ereignisse haben IDs. Aber ich schätze, wenn das Ereignis per Drag & Drop verschoben wird, hat das neue Ereignis keine ID?

Danke!

Antwort

0

Rails-Anwendung ist update als :id annimmt, wenn Sie diese URL /events/update

$ rake routes 

event PUT /events/:id(.:format)   events#update 

Änderung der URL in Ajax-Request an

$.ajax({ 
    type: 'PUT', 
    url: '/events/' + event.id, 
    dataType: 'json', 
    data: { event: { start_time:event.start_time, end_time: event.end_time } } 
}); 
+0

ah danke schlagen !! Jetzt mein Terminal sagt ActionController :: ParameterMissing (Parameter fehlt oder der Wert ist leer: Ereignis): app/controllers/events_controller.rb: 79: in 'event_params ' app/controllers/events_controller.rb: 49: in 'block in update ' app/controllers/events_controller.rb: 48: in' update' Bedeutet das, dass ich meine Update-Methode aktualisieren muss? –

+0

Es sagt immer noch die gleiche Botschaft. Könnte es sein, weil ich nicht start_time und end_time und ohne Datum habe? Obwohl ich denke, start_time und end_time haben Datum enthalten .. –

+0

müssen Sie die Parameter ändern, um: start_time nad: end_time –