Commit 578550bb by phuctmZigexn

Finish user signup

parent 38025573
...@@ -155,3 +155,18 @@ input, textarea, select, .uneditable-input { ...@@ -155,3 +155,18 @@ input, textarea, select, .uneditable-input {
input { input {
height: auto !important; height: auto !important;
} }
#error_explanation {
color: red;
ul {
color: red;
margin: 0 0 30px 0;
}
}
.field_with_errors {
@extend .has-error;
.form-control {
color: $state-danger-text;
}
}
\ No newline at end of file
...@@ -9,11 +9,17 @@ class UsersController < ApplicationController ...@@ -9,11 +9,17 @@ class UsersController < ApplicationController
end end
def create def create
@user = User.new(params[:user]) @user = User.new(user_params)
if @user.save if @user.save
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else else
render 'new' render 'new'
end end
end end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end end
...@@ -12,6 +12,11 @@ ...@@ -12,6 +12,11 @@
<body> <body>
<%= render 'layouts/header' %> <%= render 'layouts/header' %>
<div class="container"> <div class="container">
<% flash.each do |message_type, message| %>
<div class="alert alert-<%= message_type %>">
<%= message %>
</div>
<% end %>
<%= yield %> <%= yield %>
<%= render 'layouts/footer' %> <%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %> <!-- display debug information about each page --> <%= debug(params) if Rails.env.development? %> <!-- display debug information about each page -->
......
<% if @user.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(@user.errors.count, "error") %>.
</div>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
\ No newline at end of file
...@@ -3,18 +3,20 @@ ...@@ -3,18 +3,20 @@
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offet-3"> <div class="col-md-6 col-md-offet-3">
<%= form_for @user do |f| %> <%= form_for @user, url: signup_path do |f| %>
<%= render 'shared/error_messages' %>
<%= f.label :name %> <%= f.label :name %>
<%= f.text_field :name %> <%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %> <%= f.label :email %>
<%= f.email_field :email %> <%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %> <%= f.label :password %>
<%= f.password_field :password %> <%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Confirmation" %> <%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %> <%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Create my account", class: "btn btn-primary" %> <%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %> <% end %>
......
...@@ -4,6 +4,6 @@ Rails.application.routes.draw do ...@@ -4,6 +4,6 @@ Rails.application.routes.draw do
get '/about', to: 'static_pages#about' get '/about', to: 'static_pages#about'
get '/contact', to: 'static_pages#contact' get '/contact', to: 'static_pages#contact'
get '/signup', to: 'users#new' get '/signup', to: 'users#new'
post '/signup', to: 'users#create'
resources :users resources :users
end end
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
assert_no_difference 'User.count' do
post users_path, params: { user: {name: "",
email: "user@invalid",
password: "foo",
password_confirmation: "bar" } }
end
assert_template 'users/new'
assert_select 'div#<CSS id for error explanation>'
assert_select 'div.<CSS class for field with error>'
end
test "valid signup information" do
get signup_path
assert_difference 'User.count', 1 do
post users_path, params: { user: { name: "Example User",
email: "user@example.com",
password: "password",
password_confirmation: "password" } }
end
follow_redirect!
assert_template 'users/show'
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment