Ich lerne und erstelle meine erste App mit Ruby on Rails, indem ich ein bestehendes Projekt klonen und anpassen kann. Ich steckte in dem Schreiben eines Controllers fest und hoffe, dass jemand einen Tipp hat, mir zu helfen.Controller für eine App für Reservierungen einrichten
Kontext ich eine Trainingsplattform bin Gebäude: Benutzer ein Trainings entwerfen können, können diese Schulungen an mehreren Terminen gegeben werden (Ich nenne diese Trainingseinheiten ‚Thrills‘), (andere) Benutzer auf diese Nervenkitzel mit Vorbehalten abonnieren .
Complication Ich habe den Benutzer, Schulungen und Reservierungen Modell jetzt ausgeführt werden, aber ich will in den Nervenkitzel Modell hinzufügen zwischen (Ich weiß, das nicht der einfachste Weg ist, aber ich folgte eine Ausbildung, die das Thrill-Modell nicht enthalten). Ich habe das Modell und eine einfache Ansicht erstellt, wo ein Trainer in der Lage sein sollte, einem bestehenden Training (in Trainings/Edit) Nervenkitzel hinzuzufügen. Leider nach einem Tag versucht, ich habe nicht das geschafft, ich bekomme immer wieder:
NoMethodError in ThrillsController#create
NoMethodError (undefined method `thrills' for nil:NilClass): (line 16)
Meine TrainingsController für def bearbeiten sieht aus wie
def edit
if current_user.id == @training.user.id
@photos = @training.photos
@thrill = @training.thrills.create(thrill_params)
@thrills = @training.thrills
else
redirect_to root_path, notice: "Je hebt hier helaas geen toegang tot"
end
end
def update
if @training.update(training_params)
if params[:images]
params[:images].each do |image|
@training.photos.create(image: image)
end
end
@thrill = @training.thrills.create(thrill_params)
@thrills = @training.thrills
@photos = @training.photos
redirect_to edit_training_path(@training), notice: "Updated..."
else
render:edit
end
end
Und mein ThrillsController wie
siehtclass ThrillsController < ApplicationController
def create
@thrill = @training.thrills.create(thrill_params)
redirect_to @thrill.training, notice: "Je thrill is aangemaakt!"
end
private
def thrill_params
params.require(:thrill).permit(:trilldate, :thrillhr, :thrillmin, :training_id)
end
end
Und mein Formular, um einen Nervenkitzel in Ansichten/Nervenkitzel/_form.html.erb hinzuzufügen, die in Ansichten/Trainings/edit.html.erb
gerendert wirdDer vollständige Code der App kann hier https://github.com/chrisrutte/musc
Frage Ich bin natürlich einfach falsch, etwas zu tun hier gefunden werden, so hoffe ich jemanden, der mir den Hinweis zur Verfügung stellen kann, wie neue Nervenkitzel sparen in meiner Nervenkitzel-Modell.
Wenn weitere Informationen benötigt werden, zögern Sie nicht mich zu fragen.
Vielen Dank im Voraus!
Sie sollten Objekte zuweisen, dann verwenden Sie sie, eine andere Möglichkeit, es wird nicht funktionieren. Welche Codezeile erzeugt einen Fehler? – AndreyS
Ja, die vollständige Stack-Trace wäre hilfreich. Du rufst an vielen Orten eine Nervenkitzel-Methode an, also gibt es viele Orte, an denen etwas Null sein kann, das du nicht für null hältst. – quinn
Gerade hinzugefügt die Zeile. Danke für Ihr Interesse! @AndreyS –