Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 没有与[GET]匹配的路由/注销“;_Ruby On Rails_Ruby_Session_Httprequest_Store - Fatal编程技术网

Ruby on rails 没有与[GET]匹配的路由/注销“;

Ruby on rails 没有与[GET]匹配的路由/注销“;,ruby-on-rails,ruby,session,httprequest,store,Ruby On Rails,Ruby,Session,Httprequest,Store,在我的会话控制器中,我有一个名为destroy的方法,该方法在路由中指向“Logout”,其功能只是将会话变量重置为nil并重定向到存储索引: def destroy session[:user_id] = nil redirect_to store_url, notice: "Logged out" end 在路由文件中,我声明了指针: get "sessions/destroy" controller :sessions do get 'login' => :new post '

在我的会话控制器中,我有一个名为destroy的方法,该方法在路由中指向“Logout”,其功能只是将会话变量重置为nil并重定向到存储索引:

def destroy
session[:user_id] = nil
redirect_to store_url, notice: "Logged out"
end
在路由文件中,我声明了指针:

get "sessions/destroy"

controller :sessions do
get  'login' => :new
post 'login' => :create
delete 'logout' => :destroy
end
现在在浏览器中,我应该触发HTTP DELETE谓词,但是它使用GET,并且找不到路由

例如:


localhost:3000/logout,错误是没有路径匹配[GET]“/logout”

您应该在链接中放置显式方法::destroy,如下所示:

= link_to 'Destroy', session, method: :destroy

如果您在
config/initializers/designe.rb
中查看您的designe初始值设定项,并通过第236行搜索并切换到
:get
,如果您希望您的用户通过get请求注销

config.sign_out_via = :get
我也犯了同样的错误

这对我有用

刚把路线从

delete  'logout', to: 'sessions#destroy'
#to
get 'logout', to: 'sessions#destroy'

但是要知道,我没有使用任何按钮,我直接在url中编写它,例如:localhost:3000/logout当您在浏览器中键入该按钮时,浏览器将始终假定您使用的是HTTP GET请求。您应该在路由中使用
get'logout'=>:destroy
,以使其正常工作。URL的标准请求是get。。。如果你想更改,你应该再放一个。完成后,通过Get更改动词Delete,简单的错误会使事情变得不可能,多亏了你们两个。我的项目没有designe.rb文件,至少不在该文件夹中