What is `stringify_keys' in rails and how to solve it when this error comes

ruby, ruby-on-rails, ruby-on-rails-3, ruby-on-rails-3.2

Solution

1) `stringify_keys` is a method that is called on a hash to convert its keys from symbols to strings. It's added by Rails - it's not a standard Ruby method. Here it is in the docs.

{:a => 1, :b => 2}.stringify_keys # => {"a" => 1, "b" => 2}

2) This means that your code is passing `"/users/sign_in"` somewhere that is expecting a hash. Closer inspection reveals that you are mixing and matching two forms of `link_to`:

# specify link contents as an argument
link_to "The text in the link", "/path/to/link", some: "options"

# specify link contents in a block
link_to "/path/to/link", some: "options" do
  "The text in the link"
end

As you can see you are trying to do both:

<%= link_to "Sign out", destroy_user_session_path, :method => 'delete' do %>
  <i class=" icon-user icon-black"></i> 
<% end %>

and Rails expects the second argument in the block form to be the options hash, so it is calling `stringify_keys` on it which is causing your error.

Change those links to look like this instead:

<%= link_to destroy_user_session_path, :method => 'delete' do %>
  <i class=" icon-user icon-black"></i> Sign out 
<% end %>

Problem

In a partial file of my application I have the following code snippet for displaying user navigation(through Devise):- ``` <ul class="nav pull-right"> <% if user_signed_in? %> <li> <%= current_user.email do %> <i class=" icon-user icon-black"></i> <% end %> </li> <li> <%= link_to "Your Links", profiles_index_path do %> <i class=" icon-user icon-black"></i> <% end %> </li> <li> <%= link_to "Sign out", destroy_user_session_path, :method => 'delete' do %> <i class=" icon-user icon-black"></i> <% end %> </li> <% else %> <li> <%= link_to "Login", new_user_session_path do %> <i class=" icon-lock"></i> <% end %> </li> <li> <%= link_to "Sign up", new_user_registration_path do %> <i class=" icon-home"></i> <% end %> </li> <% end %> </ul> ``` But I'm getting an error saying:- ``` undefined method `stringify_keys' for "/users/sign_in":String ``` Now my questions are:- - What is `stringify_keys' in general?? - How do I resolve this in my code??? Thanks...

Original source