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!
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? –
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 .. –
müssen Sie die Parameter ändern, um: start_time nad: end_time –