没有找到Rails Devise Gem Routes

时间:2018-05-09 03:48:44

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

之前我的设计模型正在运行,但现在所有的路线都失败了。我有两个模型用户和管理员。每个都有正常的附加属性:firstname,:lastname等,每个属性都有相同的控制器和Devise RegistrationsController的扩展。这一切都始于我开始添加bootstrap时。 例如,当我尝试sign_out时,我收到此错误:

  

没有路线匹配[GET]“/ users / sign_out”   Rails.root:/ Users / elizabeth / Desktop / ecoCalculator

我不确定是什么导致它认为退出是[GET]

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

  

Devise中的ActionController :: UrlGenerationError :: Sessions #new   显示/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

2 个答案:

答案 0 :(得分:0)

在路线

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删除此

答案 1 :(得分:0)

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

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

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