From ba6af5b6318b3396e7b9a55986a4dcb944bebc1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20=C4=B0LHAN?= Date: Fri, 30 Aug 2013 13:43:43 +0300 Subject: [PATCH] #18 User profile clean and fix. --- app/controllers/users_controller.rb | 77 +++++++++++++++++++++++++++++ app/views/users/index.json.jbuilder | 4 ++ app/views/users/show.html.erb | 18 +++++++ app/views/users/show.json.jbuilder | 1 + 4 files changed, 100 insertions(+) create mode 100644 app/controllers/users_controller.rb create mode 100644 app/views/users/index.json.jbuilder create mode 100644 app/views/users/show.html.erb create mode 100644 app/views/users/show.json.jbuilder diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000..6b9a83b --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,77 @@ +class UsersController < ApplicationController + before_action :set_user, only: [:show, :edit, :update, :destroy] + + # GET /users + # GET /users.json + def index + @users = User.all + end + + # GET /users/1 + # GET /users/1.json + def show + @profile = @user.profile + end + + # GET /users/new + def new + @user = User.new + end + + # GET /users/1/edit + def edit + @user.build_profile if !@user.profile + @profile = @user.profile + end + + # POST /users + # POST /users.json + def create + @user = User.new(user_params) + + respond_to do |format| + if @user.save + format.html { redirect_to @user, notice: 'User was successfully created.' } + format.json { render action: 'show', status: :created, location: @user } + else + format.html { render action: 'new' } + format.json { render json: @user.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /users/1 + # PATCH/PUT /users/1.json + def update + respond_to do |format| + if @user.update(user_params) + format.html { redirect_to @user, notice: 'User was successfully updated.' } + format.json { head :no_content } + else + format.html { render action: 'edit' } + format.json { render json: @user.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /users/1 + # DELETE /users/1.json + def destroy + @user.destroy + respond_to do |format| + format.html { redirect_to users_url } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_user + @user = User.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def user_params + params.require(:user).permit(:email, profile_attributes: [:id, :name, :surname, :gender, :date_of_birth, :stackoverflow, :github, :twitter, :blog, :website, :bitbucket, :bio, :_destroy ]) + end +end diff --git a/app/views/users/index.json.jbuilder b/app/views/users/index.json.jbuilder new file mode 100644 index 0000000..094ebf6 --- /dev/null +++ b/app/views/users/index.json.jbuilder @@ -0,0 +1,4 @@ +json.array!(@users) do |user| + json.extract! user, + json.url user_url(user, format: :json) +end diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb new file mode 100644 index 0000000..4d23c9b --- /dev/null +++ b/app/views/users/show.html.erb @@ -0,0 +1,18 @@ +

<%= notice %>

+ + + +
+
<%= User.human_attribute_name(:email) %>:
+
<%= @user.email %>
+
<%= Profile.human_attribute_name(:name) %>:
+
<%= @profile.name %>
+
diff --git a/app/views/users/show.json.jbuilder b/app/views/users/show.json.jbuilder new file mode 100644 index 0000000..04fc50b --- /dev/null +++ b/app/views/users/show.json.jbuilder @@ -0,0 +1 @@ +json.extract! @user, :created_at, :updated_at