2010-10-14 11 views
7

Se invio un nuovo modulo utente con errori, reindirizza alla pagina indice e quindi esegue il rendering della nuova pagina sopra di essa. Nel controller, specifica che dovrebbe solo visualizzare la nuova azione in modo che l'utente possa vedere/correggere i propri errori e inviare nuovamente. C'è qualcosa di ovvio che mi manca?Rails create action sta reindirizzando all'indice quando dovrebbe rappresentare la nuova azione

Ecco l'azione creare nel mio codice di controllo:

def create 
    @user = User.new(params[:user]) 
    @user.role = "owner" 

    if @user.save 
    flash[:notice] = "Registration successful!" 
    else 
    flash.now[:notice] = "You have errors!" 
    render :new 
    end 
end 
+0

Non sei sicuro di cosa si intende per 'reindirizza alla pagina indice quindi rende la nuova pagina su in alto. Non e possibile. È stato reso nuovo o reindirizzato all'indice. Ci sono dei filtri sul controller che potrebbero interferire? Inoltre, probabilmente vorrai reindirizzare a: mostrare per il nuovo utente dall'interno se @ user.save. Altrimenti Rails tenterà di eseguire il rendering di una vista 'create', che probabilmente non hai. –

+1

l'indirizzo va da http: // localhost: 3000/users/new a http: // localhost: 3000/users, ma in realtà mostra la nuova pagina utente. E anche se guardo il sorgente della pagina mostra la fonte dell'indice ... È davvero strano. Sì, lo ho reindirizzato per mostrarlo ora, grazie. – Matt

+1

Ho lo stesso problema. L'hai capito? Nel mio caso, il reindirizzamento è un modo sbagliato, perché ho bisogno di conservare i dati, inseriti dall'utente e mostrare errori, che può correggere – AntonAL

risposta

0

Penso che vuoi dire

redirect_to :action => 'new' 
+0

Non necessariamente. Potrebbero voler ri-renderizzare il modulo con i valori forniti dall'utente. rendere: nuovo dovrebbe andare bene qui. –

+1

Sì, il reindirizzamento funziona ma non mostra gli errori o qualcosa del genere. – Matt

Problemi correlati