From 0dd9f7f4e105d4f8ce821673333471290bdcbfca Mon Sep 17 00:00:00 2001 From: Kevin Alwell Date: Fri, 10 Apr 2015 12:07:20 -0400 Subject: [PATCH 001/102] Initial commit --- LICENSE | 22 ++++++++++++++++++++++ README.md | 1 + 2 files changed, 23 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bb2afbe --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Kevin Alwell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb1cc4f --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# StackOverflow From e50a028570dc0912bd4cefa49df9a554b19b15d4 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen & Kevin Alwell & Malcolm Bouzi & Awesome Ninja Fighter Date: Fri, 10 Apr 2015 12:24:07 -0400 Subject: [PATCH 002/102] complete question/answer migrations --- db/migrate/20150410161434_create_questions.rb | 4 ++++ db/migrate/20150410161442_create_answers.rb | 3 +++ 2 files changed, 7 insertions(+) diff --git a/db/migrate/20150410161434_create_questions.rb b/db/migrate/20150410161434_create_questions.rb index 087b918..d782c4d 100644 --- a/db/migrate/20150410161434_create_questions.rb +++ b/db/migrate/20150410161434_create_questions.rb @@ -1,6 +1,10 @@ class CreateQuestions < ActiveRecord::Migration def change create_table :questions do |t| + t.references :creator, class_name: 'User' + t.string :title + t.string :content + t.references :best_answer, class_name: 'Answer' t.timestamps null: false end diff --git a/db/migrate/20150410161442_create_answers.rb b/db/migrate/20150410161442_create_answers.rb index f1dce81..2c1a634 100644 --- a/db/migrate/20150410161442_create_answers.rb +++ b/db/migrate/20150410161442_create_answers.rb @@ -1,6 +1,9 @@ class CreateAnswers < ActiveRecord::Migration def change create_table :answers do |t| + t.string :content + t.references :question + t.references :user t.timestamps null: false end From e0bb83a8dc9a43ffb4c53dcb270536751ac1c0db Mon Sep 17 00:00:00 2001 From: mbouzi Date: Fri, 10 Apr 2015 16:21:30 -0400 Subject: [PATCH 003/102] complete header styling --- app/assets/images/stack_exchange.png | Bin 0 -> 8638 bytes app/assets/images/stackoverflow_logo.jpg | Bin 0 -> 107951 bytes app/assets/stylesheets/application.css | 83 +++++++++++++++++++++++ app/controllers/welcome_controller.rb | 5 ++ app/views/layouts/application.html.erb | 28 ++++++++ app/views/welcome/index.html.erb | 0 config/routes.rb | 2 +- db/schema.rb | 40 +++++++++++ 8 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 app/assets/images/stack_exchange.png create mode 100644 app/assets/images/stackoverflow_logo.jpg create mode 100644 app/controllers/welcome_controller.rb create mode 100644 app/views/welcome/index.html.erb create mode 100644 db/schema.rb diff --git a/app/assets/images/stack_exchange.png b/app/assets/images/stack_exchange.png new file mode 100644 index 0000000000000000000000000000000000000000..47b4db50fc52021eaf7ecc40a7edc74e01211d3b GIT binary patch literal 8638 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≀&A86$IXK;fL9wmVC+04)4lvf3tp`M*9owU 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 +
+ + + +
+
    +
  • Questions
  • +
  • Tags
  • +
  • Users
  • +
  • Badges
  • +
  • Unanswered
  • +
  • Unanswered
  • +
+
+ +
+ <%= yield %> diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb new file mode 100644 index 0000000..e69de29 diff --git a/config/routes.rb b/config/routes.rb index 3f66539..c8215ac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ # See how all your routes lay out with "rake routes". # You can have the root of your site routed with "root" - # root 'welcome#index' + root 'welcome#index' # Example of regular route: # get 'products/:id' => 'catalog#view' diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..1bf2b4f --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,40 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20150410161442) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "answers", force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "questions", force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "users", force: :cascade do |t| + t.string "email" + t.string "password_digest" + t.string "location" + t.string "name" + t.integer "age" + t.string "avatar" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end From d653b6731750142ed53757938dd9c429ebcd56ea Mon Sep 17 00:00:00 2001 From: Hoa Nguyen & Kevin Alwell & Malcolm Bouzi & Awesome Ninja Fighter Date: Fri, 10 Apr 2015 16:29:38 -0400 Subject: [PATCH 004/102] columns --- db/schema.rb | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 db/schema.rb diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..55f711e --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,47 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20150410161442) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "answers", force: :cascade do |t| + t.string "content" + t.integer "question_id" + t.integer "user_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "questions", force: :cascade do |t| + t.integer "creator_id" + t.string "title" + t.string "content" + t.integer "best_answer_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "users", force: :cascade do |t| + t.string "email" + t.string "password_digest" + t.string "location" + t.string "name" + t.integer "age" + t.string "avatar" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end From 3082aa4c4883537681c8ca8440c6e64aceac465a Mon Sep 17 00:00:00 2001 From: Hoa Nguyen & Kevin Alwell & Malcolm Bouzi & Awesome Ninja Fighter Date: Fri, 10 Apr 2015 16:39:07 -0400 Subject: [PATCH 005/102] set database relationships --- Gemfile | 2 +- Gemfile.lock | 2 ++ app/models/answer.rb | 2 ++ app/models/question.rb | 2 ++ app/models/user.rb | 3 +++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 0eee8f5..f72e466 100644 --- a/Gemfile +++ b/Gemfile @@ -24,7 +24,7 @@ gem 'jbuilder', '~> 2.0' gem 'sdoc', '~> 0.4.0', group: :doc # Use ActiveModel has_secure_password -# gem 'bcrypt', '~> 3.1.7' + gem 'bcrypt', '~> 3.1.7' # Use Unicorn as the app server # gem 'unicorn' diff --git a/Gemfile.lock b/Gemfile.lock index e66d800..534ab09 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,6 +37,7 @@ GEM thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) arel (6.0.0) + bcrypt (3.1.10) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) builder (3.2.2) @@ -146,6 +147,7 @@ PLATFORMS ruby DEPENDENCIES + bcrypt (~> 3.1.7) byebug coffee-rails (~> 4.1.0) jbuilder (~> 2.0) diff --git a/app/models/answer.rb b/app/models/answer.rb index ec007f9..e4ff575 100644 --- a/app/models/answer.rb +++ b/app/models/answer.rb @@ -1,2 +1,4 @@ class Answer < ActiveRecord::Base + belongs_to :question + belongs_to :user end diff --git a/app/models/question.rb b/app/models/question.rb index 0ba7683..9e50950 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -1,2 +1,4 @@ class Question < ActiveRecord::Base + has_many :answers + belongs_to :creator, class_name: "User" end diff --git a/app/models/user.rb b/app/models/user.rb index 4a57cf0..115ce93 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,2 +1,5 @@ class User < ActiveRecord::Base + has_secure_password + has_many :questions, foreign_key: 'creator_id' + has_many :answers end From ca75cfad99969f2edc19d29920c492543980ca2e Mon Sep 17 00:00:00 2001 From: Kevin Alwell Date: Fri, 10 Apr 2015 17:08:29 -0400 Subject: [PATCH 006/102] Ready User Controller --- app/controllers/user_controller.rb | 106 ++++++++++++++++++++++++++++ app/views/user/create_user.html.erb | 0 config/routes.rb | 2 +- 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 app/controllers/user_controller.rb create mode 100644 app/views/user/create_user.html.erb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb new file mode 100644 index 0000000..2b85127 --- /dev/null +++ b/app/controllers/user_controller.rb @@ -0,0 +1,106 @@ +class UserController < ApplicationController +# SAM WORKS FROM THIS LINE TO LINE 49 + +def create + +end + +def new + +end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#KEVIN STARTS WORKING FROM HERE DOWN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +end diff --git a/app/views/user/create_user.html.erb b/app/views/user/create_user.html.erb new file mode 100644 index 0000000..e69de29 diff --git a/config/routes.rb b/config/routes.rb index c8215ac..8f9fe5d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,7 @@ Rails.application.routes.draw do # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". - + resources :user # You can have the root of your site routed with "root" root 'welcome#index' From 25cb8eb00c785ad144b248a7ba041450d4b5bc68 Mon Sep 17 00:00:00 2001 From: Awesome Ninja Fighter Date: Fri, 10 Apr 2015 17:10:57 -0400 Subject: [PATCH 007/102] finished seed file --- db/seeds.rb | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/db/seeds.rb b/db/seeds.rb index 4edb1e8..de9e4c5 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,3 +5,49 @@ # # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) # Mayor.create(name: 'Emanuel', city: cities.first) + + + +sam = {:email => "sam@gmail.com", :password => "12", :password_confirmation => "12", :location => "Paris, France", :name => "Samantha Guergenenov", :age => 24 , :avatar => "http://toons.mit.edu/images/c/c7/Samantha.jpg"} +malcolm = {:email => "malcolm@gmail.com", :password => "34", :password_confirmation => "34", :location => "New York, NY", :name => "Malcolm Bouzi", :age => 24, :avatar => "https://pbs.twimg.com/profile_images/549954802185039872/6x9QAsgg.jpeg"} +kevin = {:email => "kevin@gmail.com", :password => "56", :password_confirmation => "56", :location => "JockVille, MA", :name => "Kevin Alwell", :age => 13, :avatar => "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQQERQUEhQUFRQVFRcUFxcYFBQUFRUUFxUWFhQWGBUYHCggGBolHBQUITEhJSkrLi4uFx8zODMsNygtLisBCgoKDg0OGg8PGiwcHxwsNSwsLCwsLCwsLCwsLCwsOCwsNyssNywrLCs3LCw3NyssLCwsKysrKyssKysrKysrK//AABEIAGAAYAMBIgACEQEDEQH/xAAbAAACAwEBAQAAAAAAAAAAAAAEBQMGBwECAP/EADgQAAEDAgQDBQYDCQEAAAAAAAEAAgMEEQUSITFBUWEGcYGRoRMiMkKxwQdS0RUjJDNTguHw8RT/xAAYAQADAQEAAAAAAAAAAAAAAAAAAwQBAv/EABwRAAICAwEBAAAAAAAAAAAAAAABAhEDITESQf/aAAwDAQACEQMRAD8AzGfAQNnHyQj8GcNnBPZpHckJNU5RcqaM5FM4JCWWge3U2svmHL8LrGy9ySPnOg09ETDgpO59E666LUW+EFBUZH3JvfdP2SBwuDdKn4LbiUKGyQm41RaYODXSLGD+9PgglPWTZ3F3NS0GHPmzZBfKASuhYGvkxjwaVzwxrHOcdgBcmy+rMFnhNpIntPVpCAFy+Xp8ZG4IXlAF1nSOqcZZMo+Eb9U5qnWae5LsHh+YqfHpFc9uhjh9F0TVkACCjqPygkdAj6P377i3NDsZGlo+MQS+vowdQmNW3IAdyeCAfK8a5DbzWKzZFVxSlym4G6fdhG/z+5o+qixKISNJCm7EM0m/t+6anolnGmXHsrZuIQnkx/2Wl1x9o+O4B1WbdlmA17L/ANN31C0GpcW+ztp7wXSFMy38ZKVoqRZoBsNhbgsye211pn4tSF1Rrw/RZtJxXQFnqvhKjwyLMA3zRLo8/huvGHtyOI71PHhW1uwz9qCPRrC62mg9F2atIykCxPBEQRk7aIOWImUBFjPLPbK0ufqvP/vmuQ6P3RxB3C5WQFjxfb6I40nX1Qmb5sW10YtmHzb96+7HNFpu8fddxHQdy94TEIw1ztBYm+3mtQqcbLT2VH8eD+WM/VaBidU0OiJIAza3KwqTF3tmL2G2nPgoTjkkjiXOJA1sTcXTCOyz/ifIHVTspuLfYLOJBunNVUl4aN7JRKPi8F0jS1xTBrgTtsVLLYzEgWBA9LpDVVJtumWG14kcy+4GvK3BJoqU/hYo5LNQT4Q91ybE+aNLbsI2S+km9mcvsw431c4k+S5Q5yJJoWb5rnryU8Ut9LhdrKrKNImHn7pB8yh8OgGbNbL05BawTYPirfdP+8LqVtOZYy0i7Q0Hx2XMXktGT3n9EHgGLONPJmOpcBy0A0WpasTlnWhPLSMDiMvDYHioKnC3xsD3Mc1jvhPAplSRZ5SL72+qvklCJWRseLtHBMTJaszOOk0vfhtdAzst4q3dtcJNNMxoFg5mYDoqrWG9jboe9dIDpbcKWhmyPBXWsXainygHmuGMiWuKst46IuKUA7XSOGIkC2xHkjKaR7PlzdUvyPjMazOcBq1AvqOHMqR9fIflKGbSucbu0RR052CY3Ldjrcklwq/sumbdWqSi0tuUkqoPZNLBxcSOl0yO0TZug9CbTDKeI8VpbT8HqsjzlrweWq0nCq8Ssa/YW1RJC4sVfiLiPtqmPX4Iy31/wqTMdD3pt2gqM07iElkOnimLhhICbpvJDdrQo8Kwp8tiNG33PE8grW2lbAx1wS4iwJGg7lig2deqBzFlN/ldt0PJFULwDYomhiDmWOx9OqHnpTG6x/6ucuOnY3FNPQykAAUMEZcdApKGhdLtoOJKsNPSNjbZvieJRDF66bkzKPBQ6gyN1+I+nRVbHqEub7uhV7nSmopQSA42HFVeFVIl9tu2ZRVQPY6ztCjqLE5mNyh9grxiWHsl0DLgcRr6qq1/Z17NWC45cfNKlCjbEtU5xcSTcoYlGVUZadd7IM/dcmn/2Q=="} +hoa = {:email => "hoa@gmail.com", :password => "78", :password_confirmation => "78", :location => "Mars", :name => "Hoa Nguyen", :age => 26, :avatar => "http://www.uni-tuebingen.de/Klinische_Genetik/img/_personen/huu_phuc_nguyen-hoa.jpg"} + +user_1 = User.create!(sam) +user_2 = User.create!(malcolm) +user_3 = User.create!(kevin) +user_4 = User.create!(hoa) + +question1 = {:title => "World domination", :content => "What are your best plans for world domination?" , :creator_id => user_1.id} +question2 = {:title => "Ruby vs. Java", :content => "What is the difference between Ruby and Java?" , :creator_id => user_2.id } +question3 = {:title => "Put", :content => "What does put do in Ruby?" , :creator_id => user_3.id} +question4 = {:title => "Functional language", :content => "What is an example of a functional language?" , :creator_id => user_4.id} + +question_1 = Question.create!(question1) +question_2= = Question.create!(question2) +question_3 = Question.create!(question3) +question_4 = Question.create!(question4) + +answer1 = {:content => "You should perfect your evil laugh", question_id => question_1.id , user_id => user_4.id } +answer1b = {:content => "You should manipulate the most influential people", question_id => question_1.id , user_id => user_2.id } +answer2 = {:content => "Ruby is a dynamic language, Java is a static one.", question_id => question_2.id , user_id => user_1.id } +answer2b = {:content => "Not sure.", question_id => question_2.id , user_id => user_3.id } +answer3 = {:content => "Put is like print but with an extra line", question_id => question_3.id , user_id => user_2.id } +answer3b = {:content => "Same as print", question_id => question_3.id , user_id => user_3.id } +answer4 = {:content => "Javascript", question_id => question_4.id , user_id => user_3.id } +answer4b = {:content => "Javascript, Java, Haskell, Curl", question_id => question_4.id , user_id => user_1.id } + +answer_1 = Answer.create!(answer1) +answer_1b = Answer.create!(answer1b) +answer_2 = Answer.create!(answer2) +answer_2b = Answer.create!(answer2b) +answer_3 = Answer.create!(answer3) +answer_3b = Answer.create!(answer3b) +answer_4 = Answer.create!(answer4) +answer_4b = Answer.create!(answer4b) + + +question_1.update_attributes(:best_answer_id => answer_1.id) +question_2.update_attributes(:best_answer_id => answer_2.id ) +question_3.update_attributes(:best_answer_id => answer_3.id ) +question_4.update_attributes(:best_answer_id => answer_4b.id) From 50f5b4bc0d2c229be71b745aa36bb46a805ecefe Mon Sep 17 00:00:00 2001 From: Kevin Alwell Date: Fri, 10 Apr 2015 17:13:37 -0400 Subject: [PATCH 008/102] created link_to signup --- app/controllers/user_controller.rb | 19 ++++++++++++++----- app/views/layouts/application.html.erb | 2 +- app/views/user/create_user.html.erb | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 2b85127..d2143ff 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -1,13 +1,9 @@ class UserController < ApplicationController # SAM WORKS FROM THIS LINE TO LINE 49 -def create -end -def new -end @@ -51,9 +47,22 @@ def new +#KEVIN STARTS WORKING FROM HERE DOWN +def create + @user = user.create(params) +end + +def new + +end + + + + + + -#KEVIN STARTS WORKING FROM HERE DOWN diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 7e05b54..850e8ff 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,7 +11,7 @@ \ No newline at end of file diff --git a/app/views/user/index.html.erb b/app/views/user/index.html.erb deleted file mode 100644 index 8b3a583..0000000 --- a/app/views/user/index.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -

Users

- -<% @all_users.each do |u| %> -

<%= u.name %> -
<%= u.location %> -

-<% end %> diff --git a/app/views/user/login.html.erb b/app/views/user/login.html.erb deleted file mode 100644 index b4bbe5a..0000000 --- a/app/views/user/login.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - - - -<%= form_tag new_login_path do %> -
- Login - <%= label_tag :email %> - <%= text_field_tag :email %> - <%= label_tag :password %> - <%= password_field_tag :password %> - - <%= submit_tag "Submit!" %> - -
-<% end %> From 28b0f329ed08305dfab3ed281a1a0095da81944a Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 10 Apr 2015 19:42:22 -0500 Subject: [PATCH 030/102] Fix routes by merging into resource block modified: config/routes.rb --- config/routes.rb | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 0c86353..791d092 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,20 +1,14 @@ Rails.application.routes.draw do # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". - resources :users + resources :users do + collection do + get 'login' + post 'new_login' + end + end # You can have the root of your site routed with "root" - root 'welcome#index' - post '/users/new' => 'user#create' - - get '/login' => 'users#login', as: :login - - post '/login' => 'users#new_login', as: :new_login - - - - - - + root 'welcome#index' resources :questions From 09392cbbb45b050be457f6f8bd4822e78356a340 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 10 Apr 2015 19:43:07 -0500 Subject: [PATCH 031/102] Moved erb back new file: app/views/users/index.html.erb new file: app/views/users/login.html.erb --- app/views/users/index.html.erb | 7 +++++++ app/views/users/login.html.erb | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 app/views/users/index.html.erb create mode 100755 app/views/users/login.html.erb diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb new file mode 100644 index 0000000..8b3a583 --- /dev/null +++ b/app/views/users/index.html.erb @@ -0,0 +1,7 @@ +

Users

+ +<% @all_users.each do |u| %> +

<%= u.name %> +
<%= u.location %> +

+<% end %> diff --git a/app/views/users/login.html.erb b/app/views/users/login.html.erb new file mode 100755 index 0000000..00233f7 --- /dev/null +++ b/app/views/users/login.html.erb @@ -0,0 +1,15 @@ + + + +<%= form_tag new_login_users_path do %> +
+ Login + <%= label_tag :email %> + <%= text_field_tag :email %> + <%= label_tag :password %> + <%= password_field_tag :password %> + + <%= submit_tag "Submit!" %> + +
+<% end %> From 5280d2b2a31a39c2dcad4f6b46b449fe1733879c Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 10 Apr 2015 19:46:50 -0500 Subject: [PATCH 032/102] Save answer from question#show modified: app/controllers/answers_controller.rb --- app/controllers/answers_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index 1ce6f42..6f21732 100755 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -1,6 +1,8 @@ class AnswersController < ApplicationController def create answer = Answer.new(answer_params) + answer.user_id = session[:user_id] + answer.save redirect_to answer.question end From f06a96f2334b167f0e7dd3750f5ae67c034c7c1c Mon Sep 17 00:00:00 2001 From: mbouzi Date: Fri, 10 Apr 2015 22:32:25 -0400 Subject: [PATCH 033/102] header auth additions/routes additions/questions index/answers edit/sessions controller for logoutu --- app/assets/stylesheets/application.css | 11 +++++++++-- app/controllers/answers_controller.rb | 25 +++++++++++++++++++++++++ app/controllers/questions_controller.rb | 14 ++++++++++++++ app/controllers/sessions_controller.rb | 9 +++++++++ app/views/answers/edit.html.erb | 8 ++++++++ app/views/layouts/application.html.erb | 19 ++++++++++++++----- app/views/questions/index.html.erb | 21 +++++++++++++++++++++ config/routes.rb | 7 +++++++ 8 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 app/controllers/answers_controller.rb create mode 100644 app/controllers/questions_controller.rb create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/views/answers/edit.html.erb create mode 100644 app/views/questions/index.html.erb diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 3b2ab3d..ebfcecc 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -32,7 +32,7 @@ #logo { height: 3em; - width: 11em; + width: 12em; margin-left: 11em; display: block; margin-top: -6.4em; @@ -69,7 +69,7 @@ ul li { } .bottom_header { - background-color: grey; + background-color: #858D93; color: white; padding: .5em; margin-left: .4em; @@ -95,4 +95,11 @@ ul li { width: 17em; } +/*Questions Index*/ + + .ind_ques { + padding: 12px 0 10px 0; + border-bottom: 1px solid #e0e0e0; + border-top: 1px solid #e0e0e0; +} diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb new file mode 100644 index 0000000..fd33a48 --- /dev/null +++ b/app/controllers/answers_controller.rb @@ -0,0 +1,25 @@ +class AnswersController < ApplicationController + + def edit + @answer = Article.find(params[:id]) + end + + def update + @answer = Answer.find(params[:id]) + + @answer.update(answer_params) + if @answer.save + redirect_to @answer + else + redirect_to '/edit' + end + end + + + private + def answer_params + params.require(:answer).permit(:question_id, :content, :user_id) + end + + +end \ No newline at end of file diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb new file mode 100644 index 0000000..aa58330 --- /dev/null +++ b/app/controllers/questions_controller.rb @@ -0,0 +1,14 @@ +class QuestionsController < ApplicationController + + def index + @quesions = Question.all + end + + + private + def question_params + params.require(:question).permit(:title, :content, :answer_id, :user_id) + end + + +end \ No newline at end of file diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 0000000..acebf40 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,9 @@ +class SessionsController < ApplicationController + + + def destroy + session[:user_id] = nil + redirect_to '/login' + end + +end \ No newline at end of file diff --git a/app/views/answers/edit.html.erb b/app/views/answers/edit.html.erb new file mode 100644 index 0000000..b9c41d4 --- /dev/null +++ b/app/views/answers/edit.html.erb @@ -0,0 +1,8 @@ +<%= form_for(@answer) url: {action: "edit"} do |f| %> + + + <%= f.label :content %> + <%= f.text_field :content %> + + <%= f.submit %> +<% end %> \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 7e05b54..ab4290b 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,14 +11,23 @@ @@ -29,7 +38,7 @@
  • Users
  • Badges
  • Unanswered
  • -
  • Unanswered
  • +
  • Ask Question
  • diff --git a/app/views/questions/index.html.erb b/app/views/questions/index.html.erb new file mode 100644 index 0000000..8698f1b --- /dev/null +++ b/app/views/questions/index.html.erb @@ -0,0 +1,21 @@ + +
    + <% if session[:user_id] %> +

    All Questions

    + <% @questions.each do |question| %> +
    +

    <%= question.title %>

    +

    <%= question.content %>

    +

    <%= question.user %>

    +
    + <% end %> + + <% else %> + <% if false %> +

    <%= link_to 'sign up', signup_path %>

    +

    <%= link_to 'login', login_path %>

    + <% end %> + <% end %> +
    + + diff --git a/config/routes.rb b/config/routes.rb index c8215ac..9d3eccd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,10 +1,17 @@ Rails.application.routes.draw do + + resources :answers + resources :questions # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". # You can have the root of your site routed with "root" root 'welcome#index' + + + + get '/logout' => 'sessions#destroy' # Example of regular route: # get 'products/:id' => 'catalog#view' From fb39f8ea4f3feb114a32bd6a9118e5e4c2af19ad Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 10 Apr 2015 22:19:24 -0500 Subject: [PATCH 034/102] Fixed minor question code modified: app/controllers/questions_controller.rb modified: app/views/questions/index.html.erb --- app/controllers/questions_controller.rb | 4 ++++ app/views/questions/index.html.erb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) mode change 100644 => 100755 app/views/questions/index.html.erb diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index eaa2af6..58e9b65 100755 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -6,4 +6,8 @@ def new def show @question = Question.find(params[:id]) end + + def index + @questions = Question.all + end end \ No newline at end of file diff --git a/app/views/questions/index.html.erb b/app/views/questions/index.html.erb old mode 100644 new mode 100755 index 8698f1b..ddf4dae --- a/app/views/questions/index.html.erb +++ b/app/views/questions/index.html.erb @@ -6,7 +6,7 @@

    <%= question.title %>

    <%= question.content %>

    -

    <%= question.user %>

    +

    <%= question.creator %>

    <% end %> From 5e24a300b82dfd402c74fbfcc9517be38463d7fb Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 07:22:12 -0400 Subject: [PATCH 035/102] clean up controllers --- app/controllers/answers_controller.rb | 22 +++++--- app/controllers/questions_controller.rb | 18 ++++++- app/controllers/sessions_controller.rb | 9 ---- app/controllers/users_controller.rb | 68 +++---------------------- config/routes.rb | 2 +- 5 files changed, 37 insertions(+), 82 deletions(-) delete mode 100644 app/controllers/sessions_controller.rb diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index 1c30297..4f1e4d7 100755 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -1,10 +1,16 @@ class AnswersController < ApplicationController + + + def new + @answer = Answer.new + end + def create - answer = Answer.new(answer_params) - answer.user_id = session[:user_id] - answer.save + @answer = Answer.new(answer_params) + @answer.user_id = session[:user_id] + @answer.save - redirect_to answer.question + redirect_to @answer.question end def edit @@ -16,7 +22,7 @@ def update @answer.update(answer_params) if @answer.save - redirect_to @answer + redirect_to @answer.question else redirect_to '/edit' end @@ -24,9 +30,9 @@ def update private - def answer_params - params.require(:answer).permit(:content, :question_id) - end + # def answer_params + # params.require(:answer).permit(:content, :question_id) + # end def answer_params params.require(:answer).permit(:question_id, :content, :user_id) diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 58e9b65..3d67544 100755 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -1,13 +1,27 @@ class QuestionsController < ApplicationController + + def index + @questions = Question.all + end + def new @question = Question.new end + def create + @question = Question.new(answer_params) + @question.user_id = session[:user_id] + @question.save + + redirect_to @question + end + def show @question = Question.find(params[:id]) end - def index - @questions = Question.all + + def question_params + params.require(:question).permit(:user_id, :title, :user_id :content, :user_id) end end \ No newline at end of file diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb deleted file mode 100644 index acebf40..0000000 --- a/app/controllers/sessions_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class SessionsController < ApplicationController - - - def destroy - session[:user_id] = nil - redirect_to '/login' - end - -end \ No newline at end of file diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index e020ef2..23c8c0a 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -20,26 +20,6 @@ def new_login - - - - - - - - - - - - - - - - - - - - #KEVIN STARTS WORKING FROM HERE DOWN @@ -61,7 +41,6 @@ def create def show - @user = User.find(params[:id]) end @@ -69,51 +48,16 @@ def update end + def destroy + session[:user_id] = nil + redirect_to '/login' + end + + private def user_params params.require(:user).permit(:name, :age, :location, :email, :password, :password_confirmation, :avatar) end - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - end diff --git a/config/routes.rb b/config/routes.rb index a39a45f..ef732f7 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -9,11 +9,11 @@ collection do get 'login' post 'new_login' + get 'logout' end end - get '/logout' => 'sessions#destroy' # Example of regular route: # get 'products/:id' => 'catalog#view' From 55f9b1c2b86492f8e497302214784a05c2097f0f Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 09:02:00 -0400 Subject: [PATCH 036/102] link to users --- app/assets/javascripts/application.js | 7 +++ app/assets/stylesheets/application.css | 60 +++++++++++++++++++++++--- app/controllers/answers_controller.rb | 2 +- app/helpers/application_helper.rb | 1 + app/views/answers/edit.html.erb | 2 +- app/views/layouts/application.html.erb | 16 +++---- app/views/users/index.html.erb | 21 ++++++--- 7 files changed, 86 insertions(+), 23 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index e07c5a8..939d076 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -14,3 +14,10 @@ //= require jquery_ujs //= require turbolinks //= require_tree . +$(document).ready(function() { + $("[href]").each(function() { + if (this.href == window.location.href) { + $(this).addClass("active"); + } + }); +}); \ No newline at end of file diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 0ae906e..49c7468 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -35,16 +35,21 @@ color: #e0e0e0 !important; } +.bottom_link { + text-decoration: none !important; + color: white !important; +} + #logo { height: 3em; width: 12em; - margin-left: 11em; + margin-left: .5em; display: block; margin-top: -6.4em; } #exchange { - margin-left: 10em; + /*margin-left: 1em;*/ margin-top: -.5em; } @@ -52,13 +57,14 @@ display: inline-block; color: #e0e0e0; font-family: helvetica; - margin-left: 37em; + margin-left: 44em; margin-top: 0.4em; } #bottom { - margin-left: 40em; - + float: right; + margin-right: .7em; + margin-top: -.1em; } ul li { @@ -95,6 +101,8 @@ ul li { #navbar-search { margin-left: 21em; margin-top: -1em; + float: right; + margin-right: 1em; } #search_bar { @@ -109,3 +117,45 @@ ul li { border-top: 1px solid #e0e0e0; } +/* User Index */ + +#ui_title { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + margin-left: .7em; +} + +#user_index { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + padding: 15px; + border: 0; + border-top: 1px solid #e0e0e0; + box-sizing: content-box; +} + +.ui_avatar { + width: 3.3em; + height: 3.3em; + margin: 0 auto; + box-shadow: 2px 2px 4px rgba(0,0,0,0.5); +} + +.user_pro { + display: inline-block; + margin-right: 15em; +} + +.user_pro_name { + color: #0c65a5; + font-size: .8em; + margin-left: 4.5em; + margin-top: 1.2em; + position: absolute; +} + +.user_pro_location { + color: #888; + font-size: .8em; + margin-left: 4.5em; + margin-top: 2.4em; + position: absolute; +} diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index 4f1e4d7..0a95469 100755 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -14,7 +14,7 @@ def create end def edit - @answer = Article.find(params[:id]) + @answer = Answer.find(params[:id]) end def update diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index de6be79..a2f4870 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,2 +1,3 @@ module ApplicationHelper + end diff --git a/app/views/answers/edit.html.erb b/app/views/answers/edit.html.erb index b9c41d4..9d91141 100644 --- a/app/views/answers/edit.html.erb +++ b/app/views/answers/edit.html.erb @@ -1,4 +1,4 @@ -<%= form_for(@answer) url: {action: "edit"} do |f| %> +<%= form_for @answer do |f| %> <%= f.label :content %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index ab4290b..5e70724 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,16 +11,12 @@ - + <%= link_to image_tag("stackoverflow_logo.jpg", :id=>'logo'), controller: 'welcome' %> diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index 9ad0f6d..7b2e617 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb @@ -1,6 +1,15 @@ -

    Users

    -<% @all_users.each do |u| %> -

    <%= u.name %> -
    <%= u.location %> -

    -<% end %> +

    Users

    +
    + Type to find users: +
      + <% @all_users.each do |u| %> +
    • +

      <%= u.name %> +

      <%= u.location %>

      +

      +
    • + <% end %> +
    +
    \ No newline at end of file From 9d9ffa13732c955c4e1b56391f4d1c01eb93d249 Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 10:18:31 -0400 Subject: [PATCH 037/102] questions index --- app/assets/javascripts/application.js | 7 -- app/assets/stylesheets/application.css | 95 ++++++++++++++++++++++++- app/controllers/questions_controller.rb | 6 +- app/views/layouts/application.html.erb | 8 ++- app/views/questions/index.html.erb | 16 ++--- app/views/users/index.html.erb | 2 +- app/views/users/login.html.erb | 5 +- app/views/users/new.html.erb | 42 +++++------ 8 files changed, 130 insertions(+), 51 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 939d076..e07c5a8 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -14,10 +14,3 @@ //= require jquery_ujs //= require turbolinks //= require_tree . -$(document).ready(function() { - $("[href]").each(function() { - if (this.href == window.location.href) { - $(this).addClass("active"); - } - }); -}); \ No newline at end of file diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 49c7468..29bfbd3 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -111,12 +111,46 @@ ul li { /*Questions Index*/ - .ind_ques { +#all_questions { + margin-top: 3em; +} + +.ind_ques { padding: 12px 0 10px 0; border-bottom: 1px solid #e0e0e0; border-top: 1px solid #e0e0e0; } +.ind_ques_contents { + margin-left: 6em; +} + +.ui_avatar_question { + width: 2.7em; + height: 2.7em; + margin: 0 auto; + box-shadow: 2px 2px 4px rgba(0,0,0,0.5); + margin-top: 1em; +} + +div div p { + color: #0c65a5; + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; +} + +div div p:nth-child(2) { + font-size: .7em; + color: #444; +} + +div div p:nth-child(4) { + font-size: .7em; + position: absolute; + margin-left: 4.5em; + margin-top: -5.5em; + mar +} + /* User Index */ #ui_title { @@ -159,3 +193,62 @@ ul li { margin-top: 2.4em; position: absolute; } + +#register_title { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + margin-left: .2em; +} + +form input[type='text'] { + margin-top: 1em; + width: 23em; + height: 2em; + border-color: black; + border-width: 1px; +} + +form input[type='password'] { + margin-top: 1em; + width: 23em; + height: 2em; + border-color: black; + border-width: 1px; +} + +form input[type='url'] { + margin-top: 1em; + width: 23em; + height: 2em; + border-color: black; + border-width: 1px; +} + +form input[type='submit'] { + margin-top: 1.5em; + position: absolute; + color: #fff; + background-color: #009afd; + border: 1px solid #1777b7; + box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset,0 1px 1px rgba(100,100,100,0.3); + padding: 8px 10px 7px 10px; + border-radius: 3px; + text-decoration: none; + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; +} + +fieldset { + width: 20%; + padding-bottom: 4em; + background: #f9f9f9; + border: 1px solid #d4d4d4; + box-shadow: -1px 1px #f2f2f2; + color: #888; + margin-bottom: 15px; + margin-top: 2em; +} + +legend { + color: black; + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; +} + diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 3d67544..83a9a6f 100755 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -21,7 +21,7 @@ def show end - def question_params - params.require(:question).permit(:user_id, :title, :user_id :content, :user_id) - end + # def question_params + # params.require(:question).permit(:user_id, :title, :user_id :content, :user_id) + # end end \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5e70724..7713bb1 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,25 +11,27 @@
      -
    • Questions
    • +
    • <%= link_to 'Questions', questions_path, :class => 'bottom_link'%>
    • Tags
    • <%= link_to 'Users', users_path, :class => 'bottom_link'%>
    • Badges
    • diff --git a/app/views/questions/index.html.erb b/app/views/questions/index.html.erb index ddf4dae..c5add2c 100755 --- a/app/views/questions/index.html.erb +++ b/app/views/questions/index.html.erb @@ -1,21 +1,21 @@ -
      - <% if session[:user_id] %> -

      All Questions

      +
      +

      All Questions

      <% @questions.each do |question| %>
      -

      <%= question.title %>

      -

      <%= question.content %>

      -

      <%= question.creator %>

      +
      +

      <%= question.title %>

      +

      <%= question.content %>

      +

      +

      <%= question.creator.name %>

      +
      <% end %> - <% else %> <% if false %>

      <%= link_to 'sign up', signup_path %>

      <%= link_to 'login', login_path %>

      <% end %> - <% end %>
      diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index 7b2e617..8745a01 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb @@ -1,7 +1,7 @@

      Users

      Type to find users:
        <% @all_users.each do |u| %> diff --git a/app/views/users/login.html.erb b/app/views/users/login.html.erb index 00233f7..726714b 100755 --- a/app/views/users/login.html.erb +++ b/app/views/users/login.html.erb @@ -1,15 +1,14 @@ - <%= form_tag new_login_users_path do %>
        - Login + Log in <%= label_tag :email %> <%= text_field_tag :email %> <%= label_tag :password %> <%= password_field_tag :password %> - <%= submit_tag "Submit!" %> + <%= submit_tag "Log In" %>
        <% end %> diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb index ebfeabc..8816cba 100644 --- a/app/views/users/new.html.erb +++ b/app/views/users/new.html.erb @@ -1,30 +1,22 @@ -

        Register

        <%= form_for User.new do |f| %>
        -
        - <%= f.label :name %> - <%= f.text_field :name %> -
        - <%= f.label :email %> - <%= f.text_field :email %> -
        - <%= f.label :password %> - <%= f.text_field :password %> -
        - <%= f.label :password_confirmation %> - <%= f.text_field :password_confirmation %> -
        - <%= f.label :age %> - <%= f.text_field :age %> -
        - <%= f.label :location %> - <%= f.text_field :location %> -
        - <%= f.label :avatar %> - <%= f.url_field :avatar %> -
        - <%= f.submit 'Register'%> -
        + Sign Up + <%= f.text_field :name, :placeholder => "Name (your public display name" %> + + <%= f.text_field :email, :placeholder => "Email (required, but never shown)" %> + + <%= f.password_field :password, :placeholder => "Password" %> + + <%= f.password_field :password_confirmation, :placeholder => "Confirm password" %> + + <%= f.text_field :age, :placeholder => "Age" %> + + <%= f.text_field :location, :placeholder => "Location" %> + + <%= f.url_field :avatar, :placeholder => "Avatar" %> + + <%= f.submit 'Sign Up'%> + <%end%> From ca5bdd20aca10bd00f98d26435ffd9272cc753f3 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 13:42:59 -0400 Subject: [PATCH 038/102] finished destroy method for questions --- .DS_Store | Bin 6148 -> 6148 bytes app/controllers/questions_controller.rb | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/.DS_Store b/.DS_Store index 6b2e12920fbfc73198470150fe7700defd7e0962..2e0482ca572f20135225c34f4dc5cf50925396c7 100644 GIT binary patch delta 31 ncmZoMXfc@J&nU1lU^g?Pz-AtnR_4ju*#jmvsBLEF_{$FfpB4%l delta 52 zcmZoMXfc@J&nUPtU^g?P;AS3{R%UT#h7yKch62x={N$vZ{3Hej1_1^J#-Pbf?D3n~ IIsWnk0CJHHvj6}9 diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 58e9b65..14d219f 100755 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -1,8 +1,15 @@ class QuestionsController < ApplicationController + def new @question = Question.new end + def create + @new_question = Question.new(question_params) + if @new_question.save! + + end + def show @question = Question.find(params[:id]) end @@ -10,4 +17,16 @@ def show def index @questions = Question.all end + + def destroy + @question = Question.find(params[:id]) + if session[:user_id] == @question.user_id + @question.destroy! + redirect_to questions_path + else + flash[:notice] = "You can only delete your own questions!" + redirect_to questions_path + end + end + end \ No newline at end of file From 39d490621769e8d1d4d655cb261cf27f0ea6fdf4 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 13:52:03 -0400 Subject: [PATCH 039/102] finished create route for questions --- app/controllers/questions_controller.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 14d219f..71db140 100755 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -7,7 +7,11 @@ def new def create @new_question = Question.new(question_params) if @new_question.save! - + redirect_to question_path(@new_question) + else + flash[:notice] = "A problem has occurred. Your question couldn't be posted." + redirect_to questions_path + end end def show @@ -29,4 +33,9 @@ def destroy end end +private + def question_params + params.require(:question).permit(:title, :content).merge(creator_id:session[:user_id]) + end + end \ No newline at end of file From 4d5a15b130471c8390c3006c8b72899c41ffdb98 Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 13:53:48 -0400 Subject: [PATCH 040/102] user show --- app/assets/stylesheets/application.css | 33 ++++++++++++++++++++ app/views/users/show.html.erb | 43 +++++++++++++++----------- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 29bfbd3..4f5adcf 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -252,3 +252,36 @@ legend { font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; } +/* user show */ +.user_show { + padding: 12px 0 10px 0; + border-top: 1px solid #e0e0e0; + margin-top: 2em; + margin-left: -2em; + +} + +#us_avatar { + width: 8.3em; + height: 8.3em; +} + +#us_name { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + margin-left: .7em; + margin-top: 2em; +} + +.user_info { + margin-left: 3em; + display: inherit; + margin-left: 10em; +} + +.us_title { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + color: #0c65a5; + margin-left: .5em; + position: absolute; + margin-top: .3em; +} diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 0e0bf11..4196edc 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,21 +1,28 @@ -
          -
        • <%= image_tag @user.avatar %>
        • -
        • <%= @user.name %>
        • -
        • <%= @user.age %>
        • -
        • <%= @user.location %>
        • -
        +

        <%= @user.name %>

        +
        +
          +
        • <%= image_tag @user.avatar, :id => 'us_avatar' %>
        • + + +
        +
        +

        Questions

        +
        + <% @user.questions.each do |question| %> +
          +
        • <%= question.title %>
        • +
        • <%= question.content %>
        • +
        + <%end%> +
        -<% @user.questions.each do |question| %> -
          -
        • <%= question.title %>
        • -
        • <%= question.content %>
        • -
        -<%end%> - -<% @user.answers.each do |answer| %> -
          -
        • <%= answer.content %>
        • -
        -<%end%> +

        Answers

        +
        + <% @user.answers.each do |answer| %> +
          +
        • <%= answer.content %>
        • +
        + <%end%> +
        From 84b645ba214e1e2f61b2963522b8b536e5bbf6d2 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 14:01:13 -0400 Subject: [PATCH 041/102] finished delete question link on questions show page --- app/views/questions/show.html.erb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/views/questions/show.html.erb b/app/views/questions/show.html.erb index e99283e..859c236 100755 --- a/app/views/questions/show.html.erb +++ b/app/views/questions/show.html.erb @@ -15,6 +15,11 @@ <%= link_to answer.user.name, @question.creator %>
      + + <% end %> + + <% if session[:user_id] == @question.creator_id %> + <%= link_to "Delete my question", @question, method: :delete, data: {confirm: "Are you sure?"} %> <% end %> <%= form_for Answer.new do |f| %> From 41fe156da1d6122b465b57466510f954e045aabc Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 14:02:47 -0400 Subject: [PATCH 042/102] delete route and link working succesfully for questions. --- app/controllers/questions_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 71db140..1a9a2db 100755 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -24,7 +24,7 @@ def index def destroy @question = Question.find(params[:id]) - if session[:user_id] == @question.user_id + if session[:user_id] == @question.creator_id @question.destroy! redirect_to questions_path else From 6544d88cb41f735df8cad95cf7acd984eeb2c030 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 14:06:24 -0400 Subject: [PATCH 043/102] finished add question link --- app/views/layouts/application.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index ab4290b..7329088 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -38,7 +38,7 @@
    • Users
    • Badges
    • Unanswered
    • -
    • Ask Question
    • +
    • Ask a Question
    From 0156e1fc18cceee38b05b82916d209e40e806858 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 14:48:03 -0400 Subject: [PATCH 044/102] finished answer delete route --- app/controllers/answers_controller.rb | 12 ++++++++++++ app/views/questions/show.html.erb | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index 1c30297..d12022a 100755 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -22,6 +22,18 @@ def update end end + def destroy + @answer = Answer.find(params[:id]) + @question = @answer.question_id + if session[:user_id] == @answer.user_id || session[:user_id] == @answer.question.creator_id + @answer.destroy! + redirect_to question_path(@question) + else + flash[:notice] = "You are not permitted to delete this answer." + redirect_to question_path(@question) + end + end + private def answer_params diff --git a/app/views/questions/show.html.erb b/app/views/questions/show.html.erb index 859c236..5998a5e 100755 --- a/app/views/questions/show.html.erb +++ b/app/views/questions/show.html.erb @@ -16,6 +16,10 @@
    + <% if session[:user_id] == answer.user_id || session[:user_id] == answer.question.creator_id %> + <%= link_to "Delete my answer", answer, method: :delete, data: {confirm: "Are you sure?"} %> + <% end %> + <% end %> <% if session[:user_id] == @question.creator_id %> From 3f4412996a12f99e71de7e7e8c5027e808c97411 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Sat, 11 Apr 2015 13:52:23 -0500 Subject: [PATCH 045/102] Update answer#create/update modified: app/controllers/answers_controller.rb --- app/controllers/answers_controller.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index 0a95469..2be85fe 100755 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -6,9 +6,9 @@ def new end def create - @answer = Answer.new(answer_params) - @answer.user_id = session[:user_id] - @answer.save + answer = Answer.new(create_answer_params) + answer.user_id = session[:user_id] + answer.save redirect_to @answer.question end @@ -20,7 +20,7 @@ def edit def update @answer = Answer.find(params[:id]) - @answer.update(answer_params) + @answer.update(update_answer_params) if @answer.save redirect_to @answer.question else @@ -30,11 +30,11 @@ def update private - # def answer_params - # params.require(:answer).permit(:content, :question_id) - # end + def create_answer_params + params.require(:answer).permit(:content, :question_id) + end - def answer_params + def update_answer_params params.require(:answer).permit(:question_id, :content, :user_id) end end \ No newline at end of file From 7ec6c608ae531bb8250b4175cbe02ffea645f379 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 14:58:19 -0400 Subject: [PATCH 046/102] fixed comment edit route --- app/controllers/answers_controller.rb | 4 ++-- app/views/answers/edit.html.erb | 4 ++-- app/views/questions/show.html.erb | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index d12022a..2643dbe 100755 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -8,7 +8,7 @@ def create end def edit - @answer = Article.find(params[:id]) + @answer = Answer.find(params[:id]) end def update @@ -16,7 +16,7 @@ def update @answer.update(answer_params) if @answer.save - redirect_to @answer + redirect_to @answer.question else redirect_to '/edit' end diff --git a/app/views/answers/edit.html.erb b/app/views/answers/edit.html.erb index b9c41d4..d4908a5 100644 --- a/app/views/answers/edit.html.erb +++ b/app/views/answers/edit.html.erb @@ -1,5 +1,5 @@ -<%= form_for(@answer) url: {action: "edit"} do |f| %> - +<%= form_for(@answer) do |f| %> + <%= f.label :content %> <%= f.text_field :content %> diff --git a/app/views/questions/show.html.erb b/app/views/questions/show.html.erb index 5998a5e..2135c5c 100755 --- a/app/views/questions/show.html.erb +++ b/app/views/questions/show.html.erb @@ -16,8 +16,9 @@ - <% if session[:user_id] == answer.user_id || session[:user_id] == answer.question.creator_id %> + <% if session[:user_id] == answer.user_id %> <%= link_to "Delete my answer", answer, method: :delete, data: {confirm: "Are you sure?"} %> + <%= link_to "Edit my answer",edit_answer_path %> <% end %> <% end %> From 0d1ba305ca220d3c25636f3524588a02126b65bb Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 15:30:18 -0400 Subject: [PATCH 047/102] made existing destroy method into logout method, so that destroy method --- app/controllers/users_controller.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 23c8c0a..d9a1d72 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -48,11 +48,14 @@ def update end - def destroy + def logout session[:user_id] = nil redirect_to '/login' end + def destroy + end + private def user_params From 33a37fca9b4732c56b5511a12ab5e6b7098b26ba Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 15:48:41 -0400 Subject: [PATCH 048/102] finished user destroy method and link from user show page --- app/controllers/users_controller.rb | 3 +++ app/views/users/show.html.erb | 3 +++ 2 files changed, 6 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d9a1d72..0229d1c 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -54,6 +54,9 @@ def logout end def destroy + @user = User.find(params[:id]) + @user.destroy! + redirect_to questions_path end diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 4196edc..fc3969b 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -25,4 +25,7 @@ <%end%> +<% if session[:user_id] == @user.id %> +<%= link_to "Delete my profile", @user, method: :delete, data: {confirm: "Are you sure?"} +<% end %> From 3981edf95efc0dfd888c76a5c0baa1b9f4446918 Mon Sep 17 00:00:00 2001 From: Alwell Date: Sat, 11 Apr 2015 15:52:40 -0400 Subject: [PATCH 049/102] Fix Login/logout on layout --- app/views/layouts/application.html.erb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index a6a5b17..2842b71 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,14 +11,12 @@ <% if session[:user_id] == @user.id %> -<%= link_to "Delete my profile", @user, method: :delete, data: {confirm: "Are you sure?"} +<%= link_to "Delete my profile", @user, method: :delete, data: {confirm: "Are you sure?"} %> <% end %> From f8a8d4284bf3260b0eb8fe0a4fd064ea2e3ec763 Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 16:00:23 -0400 Subject: [PATCH 051/102] added edit and update rout for user --- app/controllers/users_controller.rb | 28 ++++++++++++++++++---------- app/views/users/show.html.erb | 1 + 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 0229d1c..959a25f 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -16,10 +16,26 @@ def new_login end end + def edit + @user = User.find(params[:id]) + end + def update + @user = User.find(params[:id]) + @user.update_attributes(user_params) + if @user.save! + redirect_to user_path(@user) + else + flash[:notice] = "A problem occurred: your profile couldn't be updated." + redirect_to user_path(@user) + end + end - - + def destroy + @user = User.find(params[:id]) + @user.destroy! + redirect_to questions_path + end #KEVIN STARTS WORKING FROM HERE DOWN @@ -44,21 +60,13 @@ def show @user = User.find(params[:id]) end - def update - end def logout session[:user_id] = nil redirect_to '/login' end - def destroy - @user = User.find(params[:id]) - @user.destroy! - redirect_to questions_path - end - private def user_params diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index d4f943f..7909565 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -26,6 +26,7 @@ <% if session[:user_id] == @user.id %> +<%= link_to "Edit my profile", edit_user_path %> <%= link_to "Delete my profile", @user, method: :delete, data: {confirm: "Are you sure?"} %> <% end %> From 7649419ceb1bb7f72972c3dee4226c11e52f554f Mon Sep 17 00:00:00 2001 From: Samantha Guergenenov Date: Sat, 11 Apr 2015 16:06:16 -0400 Subject: [PATCH 052/102] finished edit route for user and link to edit route from user show page --- app/views/users/edit.html.erb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 app/views/users/edit.html.erb diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb new file mode 100644 index 0000000..19a8d06 --- /dev/null +++ b/app/views/users/edit.html.erb @@ -0,0 +1,25 @@ +<%= form_for @user do |f| %> + + <%= f.label :name %> + <%= f.text_field :name %> + + <%= f.label :email %> + <%= f.text_field :email %> + + <%= f.label :password %> + <%= f.text_field :password %> + + <%= f.label :password_confirmation %> + <%= f.text_field :password_confirmation %> + + <%= f.label :age %> + <%= f.text_field :age %> + + <%= f.label :location %> + <%= f.text_field :location %> + + <%= f.label :avatar %> + <%= f.text_field :avatar %> + + <%= f.submit %> +<% end %> \ No newline at end of file From 32aac22c276334286758b56757fd76012a18e60c Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 16:14:20 -0400 Subject: [PATCH 053/102] fix auth for header --- app/assets/stylesheets/application.css | 4 ++-- app/controllers/application_controller.rb | 10 ++++++++++ app/views/layouts/application.html.erb | 6 ++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 4f5adcf..e193b79 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -57,8 +57,8 @@ display: inline-block; color: #e0e0e0; font-family: helvetica; - margin-left: 44em; - margin-top: 0.4em; + margin-left: 40em; + margin-top: 0.5em; } #bottom { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d83690e..bebb343 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -2,4 +2,14 @@ class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception + + + def current_user + @current_user ||= User.find(session[:user_id]) if session[:user_id] + end + helper_method :current_user + + def authorize + redirect_to '/login' unless current_user + end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index a6a5b17..45fc81d 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,15 +11,13 @@ <%= link_to image_tag("stackoverflow_logo.jpg", :id=>'logo'), controller: 'welcome' %> From 4f301398916859794a2c5af7dc4becd9391636b6 Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 16:19:31 -0400 Subject: [PATCH 054/102] fixed header --- app/controllers/users_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 23c8c0a..a229250 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -48,9 +48,9 @@ def update end - def destroy + def logout session[:user_id] = nil - redirect_to '/login' + redirect_to login_users_path end From 1e17abd75cd5c7588f2ed158ec4859f53f643c71 Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 16:23:21 -0400 Subject: [PATCH 055/102] fix header --- app/assets/stylesheets/application.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index e193b79..49ce900 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -16,7 +16,7 @@ #banner { display: block; background-color: rgba(34, 34, 34, 1); - width: 100%; + width: 102%; margin-top: -2.2em; height: 2em; margin-left: -.47em; From 7537732e2e6903449fc3b0444eba32edb9b29c73 Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 16:25:35 -0400 Subject: [PATCH 056/102] fixed header --- app/assets/stylesheets/application.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 4f5adcf..9c5a52b 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -16,7 +16,7 @@ #banner { display: block; background-color: rgba(34, 34, 34, 1); - width: 100%; + width: 102%; margin-top: -2.2em; height: 2em; margin-left: -.47em; From 59c3ba48e23315b45d697c0c090e2e9cb629f34e Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 16:33:40 -0400 Subject: [PATCH 057/102] fix login --- app/controllers/application_controller.rb | 10 ++++++++++ app/views/layouts/application.html.erb | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d83690e..9b59499 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -2,4 +2,14 @@ class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception + + def current_user + @current_user ||= User.find(session[:user_id]) if session[:user_id] + end + + helper_method :current_user + + def authorize + redirect_to '/login' unless current_user + end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 2842b71..16fbe5d 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -34,7 +34,7 @@
  • <%= link_to 'Users', users_path, :class => 'bottom_link'%>
  • Badges
  • Unanswered
  • -
  • Ask a Question
  • +
  • <%= link_to 'Ask a Question', new_question_path, :class => 'bottom_link'%>
  • <%= link_to image_tag("stackoverflow_logo.jpg", :id=>'logo'), controller: 'welcome' %> From 9fdb57f06273cb9f50041853ffbaf2c6db06238a Mon Sep 17 00:00:00 2001 From: mbouzi Date: Sat, 11 Apr 2015 16:37:20 -0400 Subject: [PATCH 058/102] final header fix --- app/views/layouts/application.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 16fbe5d..7856ebb 100755 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -12,7 +12,7 @@