2012-11-18 32 views
0

喜IM之后的敏捷Web开发的电子书,我似乎无法激活注销操作Ruby on Rails的button_to未激活的删除方法

这里是revelant部分(TAB键无法正常工作无法格式化代码)

rake routes

logout DELETE /logout(.:format) sessions#destroy

从路径文件

controller :sessions do 
    get 'login' => :new 
    post 'login' => :create 
    delete 'logout' => :destroy 
    end 

我控制器

def destroy 
session[:user_id] = user.id 
redirect_to store_url , notice: "Logged out" 
end 

和我的观点(相关部分) <%= button_to 'Logout', logout_path, method: :delete %>

错误消息是 没有路由匹配[GET] “/注销”

我知道它应该使用delete方法,但没有我做的似乎有帮助

回答

0

您可能需要在您的路线中添加match。对不起,我没有这本书可供参考。

将这个上面你controller :sessions ...

match 'logout' => 'sessions#destroy', :as => :logout 

如果没有把上面的线,你的退出路径应该是sessions_logout_path,不logout_path

参考: http://guides.rubyonrails.org/routing.html#naming-routes

+0

听起来像他已经拥有的路径好吗但在'GET'被发送,而不是POST'的'形式'+ DELETE '。 –

+0

这两个建议的工作,但问题出在我的控制器方法,我无意中使其等于user.id而它应该是无 – naoru

0

match '/logout' => 'sessions#destroy', :via => :delete

controller :sessions do 
    member do 
    delete :destroy, :as => :logout 
    end 
end 
+0

问题是在我的控制器,而不是将其设置为零我写user.id并没有用户在那里变化。 – naoru