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…
1)
stringify_keysis 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.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 oflink_to:As you can see you are trying to do both:
and Rails expects the second argument in the block form to be the options hash, so it is calling
stringify_keyson it which is causing your error.Change those links to look like this instead: