4

Is it possible to store a User's Cookie or Session in Controller and Get the cookie by accessing it from JS or Jquery?

1 Answer 1

15

Session values are available on the server.

You can set them like this in your controller:

session[:user_name] = @user.name

If you want to access that value later in javascript, you'll probably want to do something like this in a view:

<%= javascript_tag do %>
  var userName = '<%= session[:user_name %>';
<% end %>

Cookies are managed by the browser, so accessed differently.

To set one in your controller:

cookies[:user_name] = @user.name

(You can also specify the path, expiration, etc. for the cookie using options.)

It can then be accessed using jQuery:

var userName = jQuery.cookie("user_name");

Note: you can also access the cookie using pure javascript (not jQuery) by parsing document.cookie, but it is much easier to let jQuery do it for you (if you're already using that library).

Sign up to request clarification or add additional context in comments.

6 Comments

When i do this, I'm getting $.cookie is not a function. Should i include any Js other than jquery? i'm using jquery.min.1.9.1
@Srikanth: try using it without the path hash (I've updated that line) in the response.
Also, depending on what other JS libraries you have loaded, you should replace all your "$" calls with "jQuery". (Some libraries - "prototype" in particular use the "$" namespace too. For more info on that, see stackoverflow.com/questions/6746352/… )
No equal sign before end in <%= javascript_tag do %> ... <%= end %> api.rubyonrails.org/classes/ActionView/Helpers/…
jquery cookie is deprecated, use js-cookie instead
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.