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" %>