diff --git a/app/controllers/index_controller.rb b/app/controllers/index_controller.rb index e41aea4..28d795a 100644 --- a/app/controllers/index_controller.rb +++ b/app/controllers/index_controller.rb @@ -3,28 +3,29 @@ end get '/' do - @questions = [] + @questions = Question.all.reverse erb :index end -post '/questions' do - p params - redirect '/' -end +# post '/questions' do +# p params +# redirect '/' +# end post '/login' do - @user = User.authenticate(params[:email], params[:password]) + @user = User.authenticate(params["user"]) if @user login(@user) redirect '/' else - redirect '/login' + redirect '/' end end -post '/signup' do - @user = User.new(params[:user]) +post '/users' do + @user = User.new(params['user']) + p @user if @user.save login(@user) redirect '/' diff --git a/app/controllers/questions_controller.rb b/app/controllers/questions_controller.rb index 54d3da7..d82bb04 100644 --- a/app/controllers/questions_controller.rb +++ b/app/controllers/questions_controller.rb @@ -8,26 +8,34 @@ end post '/questions' do - #IF WE CREATE A HASH WE DONT HAVE TO PUT INDIVIDUAL PARAMS @question = Question.create(params[:questions]) - redirect '/questions' + if request.xhr? + erb :'questions/_new', layout: false + else + redirect '/' + end +end + +post '/questions/:question_id/answers' do + @answer = Answer.create(params[:answer]) + @question = Question.find(params[:question_id]) + @question.answers << @answer + if request.xhr? + erb :'answers/_new', layout: false + end end get '/questions/:id' do @question = Question.find_by(id: params[:id]) - redirect "/questions/#{@question.id}" + @answers = @question.answers + erb :'questions/show' end -#RESPOND TO A QUESTION ROUTES -get '/questions/:id/responses/new' do -end - post '/questions/:id/responses' do - @response = Response.new() + @response = Response.new(user_id: session[:user_id], respondable_id: params[:id], respondable_type: "Question") @question = Question.find_by(id: params[:id]) @question.responses << @response - # @question.save DO WE NEED THIS? @response.save redirect "/questions/#{@question.id}" end @@ -35,29 +43,43 @@ #ANSWER A QUESTION ROUTES get '/questions/:id/answers/new' do + + @question = Question.find(params[:id]) + erb :'answers/new', layout: false + end post '/questions/:id/answers' do - @answer = Answer.new() + @answer = Answer.new(user_id: session[:user_id], question_id: params[:id]) @question = Question.find_by(id: params[:id]) @question.answers << @answer - # @question.save DO WE NEED THIS? @answer.save redirect "/questions/#{@question.id}" end - -#RESPOND TO A QUESTION'S ANSWER ROUTES -get '/questions/:question_id/answers/:id/responses/new' do -end - post '/questions/:question_id/answers/:id/responses' do - @response = Response.new() + @response = Response.new(user_id: session[:user_id], respondable_id: params[:id], respondable_type: "Answer") @answer = Answer.find_by(id: params[:id]) @answer.responses << @response - # @answer.save DO WE NEED THIS? @response.save @question = Question.find_by(id: params[:question_id]) redirect "/questions/#{@question.id}" end +post '/questions/:id/vote' do + @question = Question.find_by(id: params[:id]) + @vote = Vote.create(user_id: @question.user_id, votable_id: @question.id, votable_type: "Question") + if request.xhr? + if params[:data] == "upvote" + @vote.up_vote = 1 + @vote.save + return @question.up_vote_sum.to_s + elsif params[:data] == "downvote" + @vote.down_vote = 1 + @vote.save + return @question.down_vote_sum.to_s + end + else + redirect "/questions/#{params[:id]}/vote" + end +end diff --git a/app/controllers/users.rb b/app/controllers/users.rb index 1addf0f..991f36b 100644 --- a/app/controllers/users.rb +++ b/app/controllers/users.rb @@ -1,28 +1,28 @@ -get '/' do - erb :'index' -end +# get '/' do +# erb :'index' +# end -get '/users/new' do +# get '/users/new' do - erb :'/users/new' -end +# erb :'/users/new' +# end -post '/users' do - user = User.new(params[:user_info]) - if user.save - session[:user_id] = user.id - redirect "/users/#{user.id}" - else - redirect '/users/new' - end -end +# # post '/users' do +# # user = User.new(params['user']) +# # if user.save +# # session[:user_id] = user.id +# # redirect "/users/#{user.id}" +# # else +# # redirect '/users/new' +# # end +# # end -get '/users/:id' do - @user = User.find_by(id: params[:id]) - # @decks = Deck.find_by(user_id: @user.id) - if current_user == @user - erb :'/users/show' - else - redirect '/' - end -end +# get '/users/:id' do +# @user = User.find_by(id: params[:id]) +# # @decks = Deck.find_by(user_id: @user.id) +# if current_user == @user +# erb :'/users/show' +# else +# redirect '/' +# end +# end diff --git a/app/models/answer.rb b/app/models/answer.rb index 3453167..aac741a 100644 --- a/app/models/answer.rb +++ b/app/models/answer.rb @@ -1,8 +1,18 @@ class Answer < ActiveRecord::Base belongs_to :user + belongs_to :question has_many :votes, :as => :votable has_many :responses, :as => :respondable - has_many :questions + validates :text, presence: true + + def up_vote_sum + votes.sum(:up_vote) + end + + def down_vote_sum + votes.sum(:down_vote) + end + end diff --git a/app/models/question.rb b/app/models/question.rb index 685e248..7dda4b9 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -1,7 +1,29 @@ class Question < ActiveRecord::Base belongs_to :user + has_many :answers has_many :votes, :as => :votable has_many :responses, :as => :respondable + has_many :answers validates :title, :text, presence: true + + def up_vote_sum + sum = 0 + self.votes.each do |vote| + if vote.up_vote == 1 + sum += 1 + end + end + return sum + end + + def down_vote_sum + sum = 0 + self.votes.each do |vote| + if vote.down_vote == 1 + sum += 1 + end + end + return sum + end end diff --git a/app/models/response.rb b/app/models/response.rb index 49706bf..7e50f16 100644 --- a/app/models/response.rb +++ b/app/models/response.rb @@ -3,4 +3,13 @@ class Response < ActiveRecord::Base has_many :votes, :as => :votable validates :text, presence: true + + def up_vote_sum + votes.sum(:up_vote) + end + + def down_vote_sum + votes.sum(:down_vote) + end + end diff --git a/app/models/user.rb b/app/models/user.rb index 9184c06..b76d187 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,15 +8,16 @@ class User < ActiveRecord::Base include BCrypt - def self.authenticate(email, password) - user = User.find_by(email: email) - user && user.password == password ? user : nil - end - def password @password ||= Password.new(password_hash) end + def self.authenticate(args) + user = User.find_by(email: args['email']) + p user + user && user.password == args['password'] ? user : nil + end + def password=(new_password) @password = Password.create(new_password) self.password_hash = @password diff --git a/app/views/_login.erb b/app/views/_login.erb new file mode 100644 index 0000000..ba385bd --- /dev/null +++ b/app/views/_login.erb @@ -0,0 +1,42 @@ +
diff --git a/app/views/_register.erb b/app/views/_register.erb new file mode 100644 index 0000000..2b32480 --- /dev/null +++ b/app/views/_register.erb @@ -0,0 +1,47 @@ + diff --git a/app/views/answers/_new.erb b/app/views/answers/_new.erb index af5116d..f4b7514 100644 --- a/app/views/answers/_new.erb +++ b/app/views/answers/_new.erb @@ -1,7 +1 @@ - +