Ich versuche eine verschachtelte Ressource in Schienen zu verwenden, um einen neuen Datensatz zu erstellen. Ich versuche, von /events/id/entries/new
zu verwenden, wo es eineSpeichern von Werten aus einem HTTP-Post von einer verschachtelten Ressource?
<%= form_for([@event, @entry]) do |f| %>
auf der neuen Seite ist.
Meine Modelle sind:
class Entry < ApplicationRecord
belongs_to :user
belongs_to :event
class User < ApplicationRecord
has_many :entries, dependent: :destroy
class Event < ApplicationRecord
has_many :entries, dependent: :destroy
Der Controller ist:
def new
@event = Event.find(params[:event_id])
@entry = @event.entries.build
end
def create
@user = current_user
@entry = Entry.new(user_id: @user.id, event_id: :event_id , course: :entry.course , siCard: :entry.siCard)
if @entry.save
redirect_to @user
flash.now[:info] = "Event Created"
else
render '/create'
flash.now[:danger] = "Somthing went wrong"
end
end
Aber der Rekord nicht NoMethodError in EntriesController#create
obwohl es nicht speichern sagen, dass die übergebenen Parameter sind.
"utf8"=>"✓",
"entry"=>{"course"=>"Orange", "siCard"=>"23232323"},
"commit"=>"Enter",
"event_id"=>"2"}
Wie kann ich den Erstellungscontroller ändern, um den Datensatz zu speichern?
Im Allgemeinen ist es eine gute Übung, mehr von Ihrem Stack-Trace hinzuzufügen, damit die Leute Ihnen helfen können. – jvillian