Ruby on rails 行动';显示';注销时找不到UsersController |设计rails

Ruby on rails 行动';显示';注销时找不到UsersController |设计rails,ruby-on-rails,devise,routes,Ruby On Rails,Devise,Routes,几个小时来,我一直在为一些非常愚蠢的事情而挣扎。 没有直截了当的哗众取宠。当我将其粘贴到我的帖子#索引页面视图文件中时: <p><%= link_to "log out", destroy_user_session_path, :method => :delete %></p> 我尝试了很多东西,jquery和jquery.uls或其他东西都包含在application.js文件中 这是我的路线,我想他们是对的 Proxima::Applicati

几个小时来,我一直在为一些非常愚蠢的事情而挣扎。 没有直截了当的哗众取宠。当我将其粘贴到我的帖子#索引页面视图文件中时:

  <p><%= link_to "log out", destroy_user_session_path, :method => :delete %></p>
我尝试了很多东西,jquery和jquery.uls或其他东西都包含在application.js文件中

这是我的路线,我想他们是对的

Proxima::Application.routes.draw do
  devise_for :users
  resources :users
  resources :dashboard
  resources :posts
  authenticated :user do
  root :to => 'dashboard#index'
end
  resources :welcome
  devise_for :users
  resources :users
  resources :dashboard
  resources :posts
  root :to => 'welcome#index'
end
这是愚蠢的,我不明白这里发生了什么,我一次又一次地收到愚蠢的信息,但仍然没有任何事情发生。然后我决定在UsersController中写下动作“show”,但是。。。当我将redirect_写入welcome_路径时,它不会注销,我通过再次实际访问根url来检查。。。有什么想法吗?

所以错误是:

Unknown action

The action 'show' could not be found for UsersController
因此,我进入控制器并定义了show动作。然后我查看了一些designe文档,注意到我使用的这个助手:
注销:user
。这是暂时的解决办法:

  def show
    sign_out :user
    redirect_to welcome_path
end
但是,这只会注销用户并重定向到欢迎路径,但随后我遇到另一个错误:

Unknown action

The action 'show' could not be found for WelcomeController
因此,我还为Welcome controller定义了show操作:

class WelcomeController < ApplicationController
  def show
    render :index
  end
end
class WelcomeController
将用户重定向回根页面。瞧!然后我点击了页面上的登录和按钮,最后看到我被要求登录页面。我已成功注销并将用户重定向回欢迎索引URL。万岁D

然而,现在出现了奇怪的部分。我不明白为什么会这样。因此,当我放置此代码时,从根URL:

  <p><%= link_to "log out", destroy_user_session_path, :method => :delete %></p>
:删除%>

然后在我登录后点击它,它就成功地注销了,没有任何额外的写入控制器或类似的东西。非常顺利,不需要任何工作,但是当用户尝试从其他页面而不是根URL注销时,它就不工作了,我在上面使用UsersController得到了这个错误


我不明白为什么注销请求要求在用户控制器中显示操作。当它是一个GET请求来销毁用户会话时。我的意思是,为什么我必须在控制器内指定
sign:out:user
,而这正是design应该负责的事情。请解释一下这种行为

我建议您研究一下为什么您的
:method=>:delete
链接仍然以
show
操作(响应GET的操作)结束

在javascript设置正确的情况下,
:方法=>:删除链接中的
,应该可以正常工作,然后转到Desive sessions控制器中的
#destroy
方法


您还可以尝试在此处登录/注销后更改默认重定向路径:

如果使用jQuery,您需要在视图中调用“不引人注目的jQuery脚本适配器”

<%= javascript_include_tag "jquery_ujs" %>

如果您错误地删除了

//=需要jquery\u ujs

在您的
application.js中

<%= javascript_include_tag "jquery_ujs" %>