【问题标题】:Rails and clearence. No route matches导轨和间隙。没有路线匹配
【发布时间】:2017-03-18 20:14:47
【问题描述】:

我在应用程序中使用clearance。当用户尝试退出时,出现路由错误:

 Failure/Error: visit sign_out_path

 ActionController::RoutingError:
   No route matches [GET] "/sign_out"

视图中的退出链接:

  = link_to t(".sign_out"), sign_out_path, method: :delete

在roures.rb配置中

get "/sign_in",      to: "clearance/sessions#new", as: "sign_in"
get "/session",      to: "clearance/sessions#new", as: "session"
delete "/sign_out",  to: "clearance/sessions#destroy", as: "sign_out"
get "/sign_up",      to: "clearance/users#new", as: "sign_up"

resources :passwords, controller: "clearance/passwords", only: [:create, :new]
resources :session, controller: "clearance/sessions", only: [:create]

resources :users, controller: "users", only: [:create] do
  resources :password,
    controller: "clearance/passwords",
    only: [:create, :edit, :update]
end

root  to: "welcome#welcome_page"

resources :welcome, only: [:welcome_page],  path:''
resources :pages, only: [:show]
resources :users

mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

Rails 5 + Ruby 2.2.2

【问题讨论】:

  • 你只有一个删除路由,正在尝试使用get?
  • 我尝试修复错误,并在路由中添加get "/sign_out", to: "clearance/sessions#destroy", as: "sign_out"。但它错了。我写问题时忘记删除字符串。

标签: ruby-on-rails


【解决方案1】:

要解决这个问题,您有 2 个选项。

要么确保你在 application.js 中有 jquery_ujs

//= require jquery
//= require jquery_ujs

或者,如果您不想使用 jquery,请将链接更改为按钮:

= button_to t(".sign_out"), sign_out_path, method: :delete

这是从以下 SO 问题中总结的:Rails Link To Method Getting When It Should Delete

【讨论】:

  • 感谢帮助。我发现了错误。错误出现在我的应用程序布局中的路径 javascript_include_tag 中。
猜你喜欢
  • 1970-01-01
  • 2011-10-12
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2016-02-04
相关资源
最近更新 更多