【问题标题】:Route not found while using devise_scope使用 devise_scope 时找不到路由
【发布时间】:2017-08-08 17:27:18
【问题描述】:

我正在尝试使用 devise_scope 将我的 /login 重定向到设计控制器和视图。但同时我也想使用 /users/sign_in 默认设计路径,这就是为什么我没有在设计中包含 skip [:sessions] 的原因。但我收到错误

undefined method `user_session_path' for #<Module:0x00564e34f44268

routes.rb

devise_for :users, :class_name => '::User', :controllers => {
      :registrations => "users/registrations",
      :invitations => 'users/invitations',
      :confirmations => 'users/confirmations',
      :passwords => 'users/passwords'        
    }
devise_scope :user do        
   get 'login', :action => :new, :controller => 'devise/sessions'      
end

设计/会话/new.html.erb

<div class="app-section-body">
      <%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => 'form-vertical', :spellcheck => 'false' }) do |f| %>

这适用于 /users/sign_in 但会在 /login 中引发错误

【问题讨论】:

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


    【解决方案1】:

    您在get '/login' 中缺少/

    你可以用这个稍微简化一下

    devise_scope :user do        
       get '/login', to: 'devise/sessions#new'    
    end
    

    【讨论】:

    • 问题不在于重定向,它可以完美运行,但是重定向后它会在 post url 行中引发错误。
    • 我的错,你是对的,/ 实际上并不重要。我有一个虚拟设计应用程序用来测试东西,鉴于您发布的代码,我无法重现您的错误。我完全复制了您的路线,simple_form_for 的顶行是相同的,使用 simple_form gem
    • @ShilpiKayal 您应该发布您的rake routes、完整的登录表格和SessionsController(如果您已修改)。另外,您使用的是哪个版本的Devise
    • @m.simonborg:因为/ 无关紧要,请从这个答案中删除该部分
    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2013-10-07
    • 2016-08-14
    • 2016-11-15
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多