Signup form Now that we have a working (though not yet complete) user profile page , we’re ready to make a signup form for our site. Since we’re about to add the ability to create new users through the web, let’s remove the user created at the console in “Adding a secure password” Section .
~/sample_app $ rm -f db/development.sqlite3
~/sample_app $ sequelize db:migrate
Loaded configuration file "config/database.json" .
Using environment "development" .
Using gulpfile /usr/lib/node_modules/sequelize-cli/lib/gulpfile.js
Starting 'db:migrate' ...
Finished 'db:migrate' after 912 ms
== 20160119110300_create_users: migrating =======
== 20160119110300_create_users: migrated ( 0.632s)
== 20160126154757-add_index_to_users_email: migrating =======
== 20160126154757-add_index_to_users_email: migrated ( 0.306s)
== 20160128145145-add_password_digest_to_users: migrating =======
== 20160128145145-add_password_digest_to_users: migrated ( 0.286s)
The heart of the signup page is a form for submitting the relevant signup information (name, email, password, confirmation).
~/sample_app $ npm install angular-form-for --save
public/index.html
...
<script src= "../node_modules/angular-md5/angular-md5.min.js" ></script>
<script src= "../node_modules/angular-form-for/dist/form-for.min.js" ></script>
<script src= "../node_modules/angular-form-for/dist/form-for.bootstrap-templates.js" ></script>
...
public/app.js
...
var sampleApp = angular . module ( 'sampleApp' , [
'ui.router' ,
'userService' ,
'usersController' ,
'staticPagesController' ,
'bodyDirective' ,
'headDirective' ,
'gravatarForDirective' ,
'formFor' ,
'formFor.bootstrapTemplates'
]);
...
Recalling that the signup page /signup is routed to the new
action in the Users controller, our first step is to create the User object required as an argument to form_for
.
public/controllers/users_controller.js
...
usersController . controller (
'UsersNewCtrl' ,
[ '$scope' , function ( $scope ) {
$scope . user = { name : '' , email : '' , password : '' , password_confirmation : '' };
$scope . saveUser = function () {
};
}]
);
...
public/partials/users/new.html
<h1> Sign up</h1>
<div class= "row" >
<div class= "col-md-6 col-md-offset-3" >
<form form-for= "user" submit-with= "saveUser()" >
<text-field attribute= "name" label= "Name" type= "text" ></text-field>
<text-field attribute= "email" label= "Email" type= "email" ></text-field>
<text-field attribute= "password" label= "Password" type= "password" ></text-field>
<text-field attribute= "password_confirmation" label= "Password Confirmation" type= "password" ></text-field>
<input class= "btn btn-primary" name= "commit" type= "submit" value= "Create my account" />
</form>
</div>
</div>
public/assets/stylesheets/custom.css
...
/* forms */
input , textarea , select , .uneditable-input {
border : 1px solid #bbb ;
width : 100% ;
margin-bottom : 15px ;
-moz-box-sizing : border-box ;
-webkit-box-sizing : border-box ;
box-sizing : border-box ;
}
input {
height : auto !important ;
}