【问题标题】:Rails Devise Gem Routes not found未找到 Rails Devise Gem Routes
【发布时间】:2018-10-19 02:12:17
【问题描述】:

以前我的设计模型可以工作,但现在所有路线都失败了。我有两个模型用户和管理员。每个都有来自普通的附加属性,:firstname,:lastname 等,每个都有单独的控制器,这些控制器是相同的,并且是 Devise RegistrationsController 的扩展。这一切都是从我开始添加引导程序开始的。 例如,当我尝试注销时,我收到此错误:

没有路由匹配 [GET] "/users/sign_out" Rails.root: /Users/elizabeth/Desktop/ecoCalculator

我不确定是什么导致它认为注销是 [GET]

当我尝试输入 /admins/sign_up 时,我得到:

Devise::Sessions#new 中的 ActionController::UrlGenerationError 显示 /Users/elizabethzweizig/Desktop/ecoCalculator/app/views/layouts/application.html.erb 其中第 61 行提出: 没有路由匹配 {:action=>"index", :controller=>"devise/posts"}

这指的是 Bootstrap 导航栏的一部分,但帖子未链接到设计。帖子不属于用户或管理员。

以下是我扩展的 RegistrationsController 的示例

class AdminRegistrationsController < Devise::RegistrationsController

  private

  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :username, :hometown, :email, :password, :password_confirmation)
  end

  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :username, :hometown, :email, :password, :password_confirmation, :current_password)
  end
end

这是我的 routes.rb 文件

Rails.application.routes.draw do

  devise_for :users, :controllers => { registrations: 'registrations' } do
    resources :waterusage
  end

  devise_for :admins, :controllers => { admin_registrations: 'admin registrations' }

  get 'welcome/index'

  get 'waterusage/result' => "waterusages#results"
  resources :posts do
    resources :comms
  end

  resources :waterusages
  resources :goals

  get "myprofile" => "yours#profile", :as => :myprofile

  root 'welcome#index'

  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

【问题讨论】:

  • 您是否为这两个模型生成了设计控制器?如果是这样,你应该有两个文件夹usersadmins,里面有不同的控制器:注册、会话、确认、密码..是这样吗?

标签: ruby-on-rails twitter-bootstrap devise routes


【解决方案1】:

在路上

devise_for :admins, :controllers => { admin_registrations: 'admin registrations' }

它会admin/registrations 而不是admin registrations,改变这个看看发生了什么

看格式

devise_for :users, :controllers => { registrations: 'users/registrations' } do
    resources :waterusage
end

devise_for :admins, :controllers => { registrations: 'admins/registrations' }

并检查app/assets/javascripts/application.js前两行应该

//= require jquery
//= require jquery_ujs

如果存在require rails-ujs 删除此

【讨论】:

  • 重启服务器
  • 我认为其他地方的问题就像其他路径一样,路径名称拼写错误,例如 new_post_path 或其他任何内容,您可以检查 routes 就像运行 rake routes 并查看路径并比较您的用法
【解决方案2】:

我解决了这个问题,我最终对我的最后一次提交进行了硬重置,以便我可以更仔细地跟踪我的更改。它实际上与我的引导程序有关。当我编辑我已经移动的 application.html.erb 文件时。

<%= csrf_meta_tags %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

一旦我将它添加回项目中。该设计再次奏效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2017-02-13
    • 2013-06-11
    相关资源
    最近更新 更多