Question

from rake routes I get this in my application

                 new_admin_session GET    /admins/sign_in(.:format)                     {:controller=>"devise/sessions", :action=>"new"}
                     admin_session POST   /admins/sign_in(.:format)                     {:controller=>"devise/sessions", :action=>"create"}
             destroy_admin_session GET    /admins/sign_out(.:format)                    {:controller=>"devise/sessions", :action=>"destroy"}
                    admin_password POST   /admins/password(.:format)                    {:controller=>"devise/passwords", :action=>"create"}
                new_admin_password GET    /admins/password/new(.:format)                {:controller=>"devise/passwords", :action=>"new"}
               edit_admin_password GET    /admins/password/edit(.:format)               {:controller=>"devise/passwords", :action=>"edit"}
                    admin_password PUT    /admins/password(.:format)                    {:controller=>"devise/passwords", :action=>"update"}
                admin_registration POST   /admins(.:format)                             {:controller=>"devise/registrations", :action=>"create"}
            new_admin_registration GET    /admins/sign_up(.:format)                     {:controller=>"devise/registrations", :action=>"new"}
           edit_admin_registration GET    /admins/edit(.:format)                        {:controller=>"devise/registrations", :action=>"edit"}
                admin_registration PUT    /admins(.:format)                             {:controller=>"devise/registrations", :action=>"update"}
                admin_registration DELETE /admins(.:format)                             {:controller=>"devise/registrations", :action=>"destroy"}
                  new_user_session GET    /users/sign_in(.:format)                      {:controller=>"devise/sessions", :action=>"new"}
                      user_session POST   /users/sign_in(.:format)                      {:controller=>"devise/sessions", :action=>"create"}
              destroy_user_session GET    /users/sign_out(.:format)                     {:controller=>"devise/sessions", :action=>"destroy"}
                     user_password POST   /users/password(.:format)                     {:controller=>"devise/passwords", :action=>"create"}
                 new_user_password GET    /users/password/new(.:format)                 {:controller=>"devise/passwords", :action=>"new"}
                edit_user_password GET    /users/password/edit(.:format)                {:controller=>"devise/passwords", :action=>"edit"}
                     user_password PUT    /users/password(.:format)                     {:controller=>"devise/passwords", :action=>"update"}
                 user_registration POST   /users(.:format)                              {:controller=>"devise/registrations", :action=>"create"}
             new_user_registration GET    /users/sign_up(.:format)                      {:controller=>"devise/registrations", :action=>"new"}
            edit_user_registration GET    /users/edit(.:format)                         {:controller=>"devise/registrations", :action=>"edit"}
                 user_registration PUT    /users(.:format)                              {:controller=>"devise/registrations", :action=>"update"}
                 user_registration DELETE /users(.:format)                              {:controller=>"devise/registrations", :action=>"destroy"}
                              root        /(.:format)                                   {:controller=>"devise/sessions", :action=>"new"}
        change_authorization_rules GET    /authorization_rules/change(.:format)         {:controller=>"authorization_rules", :action=>"change"}
suggest_change_authorization_rules GET    /authorization_rules/suggest_change(.:format) {:controller=>"authorization_rules", :action=>"suggest_change"}
         graph_authorization_rules GET    /authorization_rules/graph(.:format)          {:controller=>"authorization_rules", :action=>"graph"}
               authorization_rules GET    /authorization_rules(.:format)                {:controller=>"authorization_rules", :action=>"index"}
              authorization_usages GET    /authorization_usages(.:format)               {:controller=>"authorization_usages", :action=>"index"}

In a haml view I do

%html
%head
  %title="Devise Demo"
  = stylesheet_link_tag :all 
  = javascript_include_tag :defaults 
  = csrf_meta_tag 
%body
  %p.notice=notice
  %p.alert=alert
  - if current_user
    = "Hello #{current_user.email}  ("
    = link_to 'Not you?', destroy_admin_session
    = ")"

but I get the error

undefined local variable or method `destroy_admin_session' for #<#<Class:0x7f66ce2d3610>:0x7f66ce2cd1c0>

I'm obviously missing the abvious about named routes in Rails 3

Brad

Was it helpful?

Solution

The trick about rake routes is that the path shown in the first column isn't the name of the helper, it's the prefix, because there are _url and _path variants.

Use destroy_admin_session_path.

OTHER TIPS

user _url at the end

destroy_admin_session should be written as destroy_admin_session_path

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top