Harshal J
Harshal J

Reputation: 59

How do I pass my session[:user_id] parameter along with form input parameters to the model in rails?

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

Answers (1)

jvillian
jvillian

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

Related Questions