2011-09-02 15 views
10

¿Cómo podría hacer una página de registro con ruby ​​on rails?Ruby on rails página súper simple de registro

Me gusta, tengo una página beta y un usuario ingresa su dirección de correo electrónico y luego puedo agregarla a la base de datos.

Además, podría enviar un correo electrónico confirmando su registro

EDIT: Quiero algo realmente simple. Al igual, simplemente agregar una fila en una base de datos simple. No necesito un cuadro de contraseña y un cuadro de nombre de usuario porque eso complica aún más las cosas. Soy un principiante, así que me gusta tener las cosas simples.

Respuesta

5

Este es el tipo de cosa que es muy fácil de hacer en los carriles y que no deberían tener ningún gemas adicionales. Estos son los pasos que deberá seguir:

  • Utilice una migración para crear un modelo (es decir, una tabla de base de datos) llamado Inscripción con un campo de cadena denominado "correo electrónico".
  • Crea una acción que se puede invocar con una solicitud "OBTENER". Esta acción devolverá el formulario de registro.
  • Crea la vista que sirve como el formulario de registro. Debe tener un elemento de formulario HTML (<form method="POST">...</form>) que contiene un cuadro de texto (<input type="text" .../>) en él y un botón de envío (<input type="submit" />). Rails tiene todo tipo de métodos de ayuda que te ayudarán a crear esas etiquetas HTML, pero no tienes que usarlas si no quieres.
  • Crea una acción que se puede invocar con una solicitud "POST" que procesa el formulario y agrega la información a la base de datos.

La acción puede ser muy simple:

def create_signup 
    Signups.create! :email => params[:email] 
end 

¿Tiene esto sentido?Ahora que le he dado la guía general, debería poder hacer nuevas preguntas que estén más centradas en partes específicas que no sabe cómo hacer. También debe buscar en la web porque probablemente haya tutoriales disponibles para todos estos pasos.

1

Esta pregunta es demasiado amplia para responder con el código en sí, pero aquí hay algunas excelentes conexiones de apuntar en la dirección correcta:

Idear (rieles más comunes de autenticación & registro plugin):
https://github.com/plataformatec/devise
idear tutorial:
http://railscasts.com/episodes/209-introducing-devise
Mailer tutorial:
http://railscasts.com/episodes/206-action-mailer-in-rails-3
Otros tutoriales Auth:
http://railscasts.com/episodes/250-authentication-from-scratch
http://railscasts.com/episodes/270-authentication-in-rails-3-1

+0

¿Puede diseñar realmente lo que el póster quiere? Parece exagerado; él solo quiere agregar direcciones de correo electrónico a una base de datos. Él no necesita una contraseña, por lo que parece que tendría que hacer todo tipo de ataques para poder comportarse de la manera que él quiere. ¿Me equivoco? –

+0

Me faltaba parte de esa información cuando publiqué (pre-edición). Probablemente tengas razón. Todavía es una pregunta bastante amplia. – tybro0103

9

En la terminal:

$ rails new foobar 
$ rm public/index.html 
$ git init 
$ git commit -m "Initial commit" 
$ rails g scaffold subscription email:string 

abrir su editor:

# app/models/subscription.rb 
class Subscription < ActiveRecord::Base 
    validates :email, :presence => true # optionally validate format of email 
end 

# app/controllers/subscriptions_controller.rb 
class SubscriptionsController < ApplicationController 
    def new 
    @subscription = Subscription.new 
    end 

    def create 
    @subscription = Subscription.new params[:subscription] 
    if @subscription.save 
     # queue a task to send a confirmation email (see below) 
     Resque.enqueue(SendConfirmationEmail, @subscription.email) 
     redirect_to root_path, :notice => 'Thanks for signing up.' 
    else 
     render :new 
    end 
    end 
end 

Puede borrar todos los otros métodos/acciones de su SubscriptionsController, y usted puede limpiar routes.rb mediante la restricción de las acciones disponible en el recurso subscriptions con resources :subscriptions, :only => [:new, :create].

Esto realmente no cubre cómo enviar el correo electrónico. Hay muchas maneras de hacerlo, y la mejor práctica es no enviarlo en el flujo de solicitud/respuesta para el rendimiento/capacidad de respuesta. Tengo una línea allí haciendo cola en un trabajo de Resque para hacerlo, pero en su lugar podría agregar fácilmente DelayedJob u otra herramienta de proceso diferido/asíncrono.

1

Hice una aplicación para esto. Launchrock ofrece una buena solución, pero si tienes dos tipos de usuarios, entonces eres una manguera. Nuestro sitio futuro tendrá múltiples tipos de usuarios y queríamos registrar qué tipo eran. Así que hicimos una aplicación y está en Github para que el mundo la use y la cambie. : D tenedor y clonar el repositorio para que sea tuyo. Incluí el plugin social también. No tiene un estilo y tendrá que cambiar algunas cosas para adaptarse a sus necesidades, pero traté de tomar nota de las de README.rd.

Launchpage-rails