我已经在我的应用程序上安装了Desive,并在我的application.html.erb文件中应用了以下内容:

<div id="user_nav">
    <% if user_signed_in? %>
        Signed in as <%= current_user.email %>. This cannot be cheese?
        <%= link_to 'Sign out', destroy_user_session_path %>
    <% else %>
        <%= link_to 'Register', new_user_registration_path %> or <%= link_to 'Sign in', new_user_session_path %>
    <% end %>
</div>

我跑了rake routes次,确认所有路由都有效.

此外,在我的routes.rb文件中,我有devise_for :usersroot :to => "home#index".

单击"注销"链接时,我遇到以下路由错误:

No route matches "/users/sign_out"

知道是什么导致了这个错误吗?

推荐答案

我认为退出的途径是DELETE种方法.这意味着您的注销链接需要如下所示:

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

你的不包括:method => :delete部分.此外,请注意,要使其起作用,您还必须在布局文件(application.html.erb)中包含<%= javascript_include_tag :defaults %>.

Ruby-on-rails相关问答推荐

Ruby Hash 中 tap / delete 和 except 的区别

错误:部署到 Heroku 时找不到模块tailwindcss/defaultTheme

has_many 通过大小验证

在 Rails 中进行 Http 基本身份验证

显示每个 rspec 示例的运行时

Rails 中的转义值(类似于 mysql_real_escape_string())

rails 3 - link_to 销毁不工作

Postgres on Rails 致命:数据库不存在

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A

简单表单关联自定义标签名称

机械师 vs FactoryGirl - 优点和缺点

使用 jQuery 在 Rails 中不显眼的动态表单字段

Rails 引擎中的迁移?

在 Ruby on Rails 中循环对象属性

表单中的第一个参数不能包含 nil 或为空 - Rails 4

如何将 ActionMailer default_url_options 的 :host 动态设置为请求的主机名?

是否可以设置 travis 来运行多种语言的测试?

Ruby on Rails 3:通过 Rails 将数据流式传输到客户端

使用 ActiveRecord 获取列名

如何测试也定义为辅助方法的 ApplicationController 方法?