2016-07-20 13 views
0

Ich versuche unten in mehr von einem Rails Weg zu haben.Rails API speichern gehört_zu association

Gegeben Termin gehört zu bedienen:

appointment = Appointment.new(appointment_params) 
appointment.service = Service.find(params[:service][:id]) 
appointment.save 

Was ich bisher versucht habe:

appointment = Appointment.new(appointment_params) 
appointment.build_service(params[:service]) 
appointment.save 

jedoch mit diesem Ansatz ich ForbiddenAttributesError

bekomme ich nicht accepts_nested_attributes_for verwenden kann, weil in starken params muss ich service_attributes verwenden, aber meine UI-Anwendung sendet AJAX-Anfrage ohne _attributes sondern nur service mit seinen Attributen.

Ich mag nicht wirklich, wo Rails erzwingt zu verwenden _attributes beliebte JavaScript-Frameworks wie Angular.js und React.js erzwingt oder ermutigen dieses Muster schließlich nicht. Gibt es eine Möglichkeit, dies zu überschreiben und immer noch starke Parameter mit dem Vorteil der Verwendung von accepts_nested_attributes_for zu verwenden?

+0

Können Sie ein Beispiel für die Daten, die Sie sowie die Umsetzung von 'appointment_params' zu Ihrem Controller sind zu senden? –

Antwort

0

Versuchen Sie, nur die ID einzustellen. Es wäre jedoch hilfreich, Ihre Modelldatei zu sehen.

appointment.service_id = params[:service][:id] 

oder

appointment.service_id = Service.find(params[:service][:id]).id # if you know service exists...