2016-05-31 7 views
0

Ich habe ein Formular, das ich an eine "Update" Aktion in einem Controller übergeben muss. Die Aktion "show" wird stattdessen aufgerufen und die Aktion "update" wird nie ausgeführt.Rails zeigen Aktion anstelle von Update-Aktion aufgerufen

Meine Routen:

 evaluations GET /evaluations(.:format)    evaluations#index 
        POST /evaluations(.:format)    evaluations#create 
    new_evaluation GET /evaluations/new(.:format)   evaluations#new 
    edit_evaluation GET /evaluations/:id/edit(.:format)  evaluations#edit 
     evaluation GET /evaluations/:id(.:format)   evaluations#show 
        PATCH /evaluations/:id(.:format)   evaluations#update 
        PUT /evaluations/:id(.:format)   evaluations#update 
        DELETE /evaluations/:id(.:format)   evaluations#destroy 

Das Formular erstellt wird:

action: "<%= evaluation_path %>", 
 
method: "patch" //I have tried both "post" and "put" as well

Mein Controller sowie eine gültige "update" Aktion hat.

+0

Das Formular wird von einem JavaScript-Objekt gerendert, das an eine React-Komponente übergeben wird. – cmwall

+0

Bitte zeigen Sie uns den gesamten Formularcode, zumindest das form_for oder form_tag. – Leito

+0

Es gibt kein form_for-Tag. Das Formular wird erstellt, indem ein JavaScript-Objekt an eine React-Komponente übergeben wird, die dann die Aktion und die Methode festlegt. – cmwall

Antwort

1

Sie sollten nicht vergessen, id oder record passieren, wie folgt:

action: evaluation_path(@evaluation), method: "patch" 

auch die Art und Weise action Schlüssel zu vermeiden:

button_to "Update", evaluation_path(@evaluation), method: "patch" 
+0

Danke, aber das nennt sich immer noch die 'show' Methode. – cmwall

+0

@cmwall erhöhte Antwort –

1

die Methode Versuchen PATCH in Großbuchstaben. Nur eine Ahnung. Die HTTP-Verben unterscheiden häufig zwischen Groß- und Kleinschreibung und sind in Großbuchstaben geschrieben.

Verwandte Themen