【问题标题】:Error while trying to delete a session in Rails尝试在 Rails 中删除会话时出错
【发布时间】:2014-11-15 00:51:32
【问题描述】:

Rails 新手。我的 Rails 应用程序中有一个名为 Admin 的模型。当我尝试删除会话时,我收到 No route Match Error。
我创建了会话控制器来管理如下所示的会话

class AdminSessionsController < ApplicationController

  before_action :confirm_logged_in, :except => [:new, :create, :destroy]

  def destroy
    session[:admin_id] = nil
    flash[:notice] = "You are now logged out"
    render("new")
  end

end

我在 routes.rb 中定义的路由

resources :admin_sessions, only: [:new, :create, :destroy]

我在其他视图中有删除会话的链接

<%= link_to "Sign out", :controller => "admin_sessions", :action => "destroy" %>

我收到以下错误

No route matches {:action=>"destroy", :controller=>"admin_sessions"}

请帮助别人!

【问题讨论】:

  • 更新完所有内容后是否重启了服务器?
  • @Casper 是的。我做了,但结果是一样的

标签: ruby ruby-on-rails-3 session ruby-on-rails-4 session-cookies


【解决方案1】:

您在资源是资源时定义资源。您不依赖于特定的 id,因此它始终应使用一个资源(DELETE /admin_sessions/id vs DELETE /admin_sessions)响应。将您的路线资源更改为资源,它将起作用。

【讨论】:

  • 当我将它从资源更改为资源时,正如@konole 所说,我收到一个新错误,如下所示未定义的局部变量或方法`new_admin_session_path' 视图中的一行
  • 在终端输入“rake routes”并检查什么是helper的正确变量(ofc将_path添加到末尾)
猜你喜欢
  • 2023-03-16
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多