Search code examples
ruby-on-railsdevise

How do I get the new_session_path(resource_name) to work using devise?


What should i add/ remove from my routes.rb to make sure the link below works?

My view (sign in link)

<%- if controller_name != 'sessions' %>
  <%= link_to "Sign in", new_session_path(resource_name) %><br />
<% end -%>

My routes:

  devise_for :users
  devise_scope :user do 
    root to: 'static_pages#home'
    match '/sessions/user', to: 'devise/sessions#create', via: :post
  end`

The URL that results from the view is '/sessions/new.user'
I get the following error in the rendered view.

Template is missing

Missing template sessions/new, application/new with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip, :rtf, :pdf], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/Users/toad/Code/version1h/edwave/app/views" * "/Users/toad/.rvm/gems/ruby-1.9.3-p392@rails3tutorial2ndEd/gems/devise-3.2.4/app/views"

Solution

  • Devise routes are nested inside a resource. So the path should be

    <%= link_to "Sign in", new_user_session_path %>