Domanda

Ho un azione User.create che registra provvisoriamente un nuovo utente e invia una e-mail con una password generata. Qual è il modo più Rails-like per completare l'azione? Io voglio fare tutto esattamente a destra da ora in poi. Non più una sciocchezza. Questa volta dico sul serio.

Sto pensando queste sono le opzioni ...

  1. Creare una vista chiamata login_email_sent.html.haml e renderlo. (Sarebbe un messaggio del tipo "grazie, una e-mail è stato inviato con i dati di accesso.")

  2. Creare una vista chiamata create.html.haml e lasciare Rails rendono che per default.

  3. Reindirizzare l'utente alla stessa pagina del modulo hanno appena presentato con un messaggio in flash.

O qualcos'altro ...?

È stato utile?

Soluzione

Questo è più di una domanda esperienza utente.

Lascia l'azione creare come qualcosa che crea solo e non ha alcuna uscita (o solo un semplice colpo di testa 201 Created se creato da una chiamata API). Fare un redirect_to a uno:

  1. Una pagina di ringraziamento dicendo loro come aspettare e cosa succederà dopo
  2. La homepage con un messaggio flash molto visibile permettendo loro di sapere cosa è successo.

Nel 99,9% dei casi non si dovrebbe mai bisogno di un modello per creare.

def create
  User.create(...)
  respond_to do |format|
    format.html { redirect_to signup_complete_url }
    format.xml  { render :head => :created }
  end
end

Per esempio.

Altri suggerimenti

Sicuramente l'opzione 3, reindirizzando all'azione spettacolo. Quando si esegue questa l'utente verrà reindirizzato quando completa l'azione, e quindi non può ripubblicare accidentalmente andando indietro nella storia. Inoltre, questo assicura le pagine possono essere resi segnalibro / salvato.

li reindirizza alla pagina di login, con un messaggio flash dicendo loro di controllare la loro e-mail per ulteriori istruzioni su convalida e accedendo al proprio account. Molte persone suggeriscono annotando l'utente automaticamente sulla convalida degli utenti, ma a mio parere, questo è un problema di sicurezza per tutti i siti sensibili.

Dipende se c'è qualcosa che può utilmente fare sul vostro sito senza registrarti. Se non v'è quindi reindirizzare alla home page e utilizzare il flash per visualizzare un messaggio che spiega che un email è stata inviata e invitandoli a guardarsi intorno nel frattempo.

Se non v'è nulla che possano fare poi li si potrebbe reindirizzare a una pagina di benvenuto con informazioni / FAQ per aiutarli ad ottenere un vantaggio e farli sentire come hanno firmato per qualcosa di utile.

Inoltre, invece di inviare loro una password nella posta elettronica, prendere in considerazione l'invio di loro un link all'account utente istituito pagina in cui si possono impostare la propria password e altri dettagli. Il collegamento dovrebbe contenere un codice di accesso porta posteriore associata con il nuovo account utente. Quando questa pagina è presentata e convalidato il codice porta sul retro può essere cancellato.

Lo stesso approccio può essere utilizzato per le password dimenticate, non appena l'utente imposta una nuova password o se si ricordano e accedi normalmente il codice porta posteriore viene eliminato.

L'unico problema di questo approccio è che possono finire con due finestre del browser o schede aperte sul tuo sito. Ma ti dà la possibilità di chiedere qualsiasi altra informazione si potrebbe richiedere - indirizzo, data di nascita o qualsiasi altra cosa -. Senza spaventare la gente lontano mettendo troppe domande sul modulo di iscrizione iniziale

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top