ruby-on-rails - 指向不同位置的 Rails 路线
问题描述
尝试注销用户时出现错误。显示和删除用户工作正常。我得到:
NoMethodError in Users#show.
undefined method `email' for nil:NilClass
我注意到的另一个奇怪的事情是传递的参数
Parameters: {"id"=>"sign_out"}
我的观点:
- if user_signed_in?
= link_to destroy_user_session_path, class: "nav-link", :action => 'go' do
.nav-icon.icon-logout
.lock
= image_tag("icons/logout.png")
.unlock
= image_tag("icons/logout-hover.png")
Logout
- else
= link_to new_user_session_path, class: "nav-link", :action => 'go' do
.nav-icon.icon-login
.lock
= image_tag("icons/login.png")
.unlock
= image_tag("icons/login-hover.png")
Login
我的路线:
devise_for :users
resources :users, :only =>[:show]
match '/users', to: 'users#index', via: 'get'
match '/users/:id', to: 'users#show', via: 'get'
match '/users/:id' => 'users#destroy', :via => :delete
解决方案
正如在此处发布的
关于通过设计破坏会话“找不到具有 'id'=sign_out 的用户”
我错过了method: :delete
我的观点。
= link_to destroy_user_session_path, method: :delete, class: "nav-link", :action => 'go' do
推荐阅读
- php - 使用 CodeIgniter 3.1.10 发送电子邮件
- javascript - 如何使用 Map() 在 React 中创建 HTML 表格
- android - React Native 应用程序在 Google Play 商店上传 apk 后崩溃,它仅在第一次崩溃
- javascript - 根据另一个数组的值显示数组的值
- google-chrome - Chrome 浏览器在启动浏览器后未获取 URL。我将所有最新版本用于(浏览器、Selenium、驱动程序管理器、ChromeDriver)
- amazon-web-services - 无法为 cloudwatch 导出器 prometheus 列出 AWS/EC2、AWS/S3、AWS/Glue 命名空间指标
- javascript - 在 JS 上积累时如何使用 CSS 过渡?(代码突然不起作用)
- java-8 - 仅在包含字母和整数的字符串中查找整数出现
- python - 获取数据框中不正确拼写单词的字典
- json - 如何停止 JSON 路径返回对象