【问题标题】:How to resolve a route not found in Rails 4如何解决在 Rails 4 中找不到的路线
【发布时间】:2014-08-29 13:19:57
【问题描述】:

我不确定我做错了什么:在我的会话控制器上,我有以下内容:

def destroy
  sign_out
  redirect_to root_url
end

在我的路线上,我有以下内容:

match '/signout', to: 'sessions#destroy', via: 'delete'

在链接上退出:

<%= link_to content_tag(:span, 'Sign out'), signout_path, method: 'delete' %>

但我得到signout_path 错误[GET] 的无路由匹配。如果我理解正确,问题是没有为GET 定义路由,这是正确的。

我无法理解的是为什么使用GET is 方法而不是根据链接删除。

有什么想法吗?

编辑:我的整个路线文件:

EDIT2:我的会话控制器的内容:

class SessionsController < ApplicationController

def new
end

def create
...
end

def destroy
    sign_out
    redirect_to root_url
end

end

路线:

Rails.application.routes.draw do

resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :categories
resources :admin

get 'users/new'
root 'static_pages#home'
match '/signup',            to: 'users#new',                        via: 'get'
match '/signin',            to: 'sessions#new',                     via: 'get'
match '/signout',           to: 'sessions#destroy',                 via: 'delete',          as: 'signout'
match '/help',              to: 'static_pages#help',                via: 'get'
match '/contact',           to: 'static_pages#contact',             via: 'get'
match '/admin',             to: 'admin#index',                      via: 'get'

end

【问题讨论】:

  • 如果您向我们展示了您的 sign_out 方法的内容,这将有助于更好地理解您的问题。此外,您没有指定导致上述错误的操作。当您单击“退出”链接时会发生这种情况,对吗? DELETE 需要启用 JavaScript
  • @jibiel 上面的销毁方法(消息中的第一块代码)。 JS 已启用。我需要添加特定的 js 文件吗? (我是 Rails 新手)
  • 您从SessionsController#destroy 方法调用sign_out 方法。如果您知道自己在做什么,我假设 sign_out 位于 ApplicationController
  • 你用的是什么浏览器?你能验证link_to帮助器生成的html是否使用了delete方法(应该有一些额外的html和一些ujs ids设置一些内部rails参数,以便调用被解释为DELETE)
  • @jibiel 老实说,我不知道自己在做什么。我想我正在调用驻留在会话控制器中的销毁方法。我认为没关系,因为我在链接中指定了控制器和方法。显然它不好,但我不知道如何解决它。

标签: ruby-on-rails ruby-on-rails-4 routes


【解决方案1】:

问题是我不小心从我的 application.js 中删除了//= require jquery_ujs,因此浏览器无法处理 DELETE 请求,而是以 GET 方式处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2011-07-05
    • 2014-06-09
    • 2017-10-10
    相关资源
    最近更新 更多