Reputation: 59
I am creating a session id based on the user id. I want to send this session id value along with some other form parameters (i.e. age, address, gender). How can I achieve this?
can I do this?
def details_params
params.require(:details).permit(:age, :address, :gender).merge(:session[:user_id])
end
Controller code
class SessionsController < ApplicationController
def create
@present_users = User.new(token: login_params).get_login_credentials
@parsed_body = JSON.parse(@present_users, :symbolize_names => true) #parsing the json response.body i.e. ':' json to '=>' hash
if @parsed_body[:result].any?{|h| h[:id][-1]} #checking if user got registered or not
session[:user_id] = @parsed_body[:result][-1][:id] #assigining user id as session id
puts "The session id is: #{session[:user_id]}"
render 'show'
else
puts "Login Error! Check details and try again"
redirect_to '/', :notice => "Invalid id, username or password"
end
end
def createcard
@newdetails = User.new(token: details_params).get_my_card
puts "@newdetails is: #{@newdetails}"
puts "session id is: #{session[:user_id]}"
@mycard = JSON.parse(@newdetails, :symbolize_names => true)
puts "@mycard data is: #{@mycard}"
render 'createcard'
end
private
def login_params
params.require(:login).permit(:id, :username, :password)
end
def details_params
params.require(:details).permit(:age, :address, :gender).merge(:session[:user_id])
end
end
Upvotes: 0
Views: 357
Reputation: 20253
Here:
params.require(:details).permit(:age, :address, :gender).merge(:session[:user_id])
.merge
wants a hash
and you're passing a value. Try, instead:
params.
require(:details).
permit(:age, :address, :gender).
merge({session_id: session[:user_id]})
This assumes that session[:user_id]
is some meaningful value.
Upvotes: 1