OK, sto cercando di capire le best practice per i metodi CREATE e UPDATE sia per i formati HTML che XML. Il codice predefinito per un controller generato dal generatore di rails non mi è chiaro.Best practice Rails per controller RESTful metodi CREATE e UPDATE
Per il metodo CREATE, dato una buona salvare, il generatore dice di "redirect_to (@whatever)" per HTML e "render: xml => @whatever,: status =>: creato,: location = > @wother "per XML.
dato un cattivo salvataggio, il generatore dice a "render: action => 'nuovo'" per HTML e "render: xml => @ whatever.errors,: status =>: unprocessable_entity" per XML .
Tuttavia, per il metodo UPDATE, dato un buon aggiornamento, il generatore dice di "redirect_to (@whatever)" per HTML e "testa: ok" per XML.
E, dato un cattivo aggiornamento, il generatore dice a "rendere: action => 'Modifica'" per HTML e "render: xml => @ whatever.errors,: status =>: unprocessable_entity" per XML.
ho capito questo, e ha senso per me, e funziona bene - MA, ho due domande:
In primo luogo, per il successo creare e aggiornare, in formato HTML, perché "redirect_to (@whatever) "invece di" render: action => 'show' "? Capisco le differenze tra redirect e render, solo più curioso di sapere in che modo voi ragazzi lo fate e perché. Sembra che il reindirizzamento sarebbe un viaggio extra non necessario per il browser.
In secondo luogo, perché "testa: ok" su aggiornamento riuscito tramite XML, ma "render: xml => @whatever,: status =>: creato,: location => @whatever" su Riuscito via XML? Questo mi sembra incoerente. Sembra che un UPDATE di successo via XML dovrebbe essere lo stesso di un successo CREATE via XML. Sembra che tu abbia bisogno di un oggetto nuovo/aggiornato restituito per poterlo testare. Come lo fate ragazzi e perché?
Sono d'accordo con le tue risposte alla seconda parte della mia domanda. E le tue risposte alla prima parte della mia domanda hanno un senso, ma poi questo fa sorgere un'altra domanda: perché, dopo una creazione o un aggiornamento falliti, viene usato il rendering e non il reindirizzamento per le stesse ragioni che hai menzionato? Cosa succede se gli utenti volevano aggiungere un segnalibro alla modifica o alla nuova pagina? Se fosse stato usato il rendering, sarebbero ancora nella pagina "/ whatevers" (che è errata). – Buddy
Se l'utente è stato reindirizzato alla nuova azione/modifica, tutti i dati POST inviati verrebbero persi e il modulo di rendering sarebbe vuoto. È corretto che l'utente possa aggiungere un segnalibro alla pagina di errore visualizzato e fare riferimento all'URL errato. Nessun modo per prevenire questo AFAIK. – Sidane
Oh sì, duh. Pensavo erroneamente di poterti ridirigere alla nuova pagina o modificare E passare un oggetto @. Mi sbagliavo. Grazie per avermi messo dritto! – Buddy