2014-02-24 30 views
0

我有一个注销链接,应该路由到用户#do_logout,但不管我做什么,如果我点击链接,它将路由到用户#show。下面是代码:路由以显示注销操作

路线:

resources :users do 
    member do 
     get :profile 
     post :profile 
    end 
    collection do 
     get "signup", to: 'users#new' 
     get "login" 
     post "do_login" 
     post "do_logout" 
    end 
    end 

链接:

li = link_to "Sign Out", do_logout_users_path 

用户控制器操作:

def do_logout 
    session[:user_id] = nil 
    redirect_to :root 
    end 

任何帮助将非常感激。这让我疯狂。

回答

1

您的代码无效,因为您已为do_logout设置了POST路线,并且您的注销链接正在发出GET请求。

要从观点做一个POST要求,你必须创建一个表单

= form_tag do_logout_users_path do 
    = submit_tag 'Sign Out' 

OR

你可以在路由使用delete方法本

delete "do_logout" 

和链接

= link_to "Sign Out", do_logout_users_path, :method => :delete 
+0

很高兴知道。谢谢。 – sturoid

+0

更新我的答案与你的代码不起作用的原因。 – Santhosh

+0

我试过了,它仍然在做同样的事情。这就像它无法击中注销路线,并且默认为显示。 – sturoid