未定义的方法`session_path' [英] undefined method `session_path'

查看:138
本文介绍了未定义的方法`session_path'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是Rails + Devise + OmniAuth + Google OAuth2。



我的用户模型(user.rb)包含:

  devise:registerable,:omniauthable,:omniauth_providers => [:google_oauth2] 

我的路线看起来像:

  Rails.application.routes.draw do 
devise_for:users,controllers:{omniauth_callbacks:'omniauth_callbacks'}
devise_scope:user do
get'sign_in',:to => 'devise / sessions#new',:as => :new_user_session
post'sign_in',:to => 'devise / session#create',:as => :user_session
get'sign_out',:to => 'devise / sessions#destroy',:as => :destroy_user_session
end

get'services',to:'static_pages#services'
get'my_account',to:'my_account#index'
get'invite ',to:'邀请#show'
get'invite /:id',to:'invite#show'

root'static_pages#home'
end

当我去/ sign_in时,我收到一个例外:


$ b $对于#<#< Class:0x007f9b7173af28>:0x007f9b713d8da8>:

  undefined方法`session_path' 

in:

 code>〜/ .rvm / gems / ruby​​-2.1.1 / gems / devise-3.2.4 / app / views / devise / sessions / new.html.erb 

行:

 <%= form_for (resource,as:resource_name,url:session_path(resource_name))do | f | %GT; 

如果我添加:database_authenticatable到user.rb它都开始工作,但我希望我的用户是只能通过Google OAuth2登录,所以我不想要:database_authenticable。看来session_path由于某种原因不可用,但我不知道为什么和如何使它可用。



谢谢,
Jen

解决方案

您需要重新启动rails服务器。这是我的解决方案。


I am using Rails + Devise + OmniAuth + Google OAuth2.

My user model (user.rb) contains:

devise :registerable, :omniauthable, :omniauth_providers => [:google_oauth2]

My routes.rb look like:

Rails.application.routes.draw do
  devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks' }
  devise_scope :user do
      get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
      post 'sign_in', :to => 'devise/session#create', :as => :user_session
      get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
  end

  get 'services', to: 'static_pages#services'
  get 'my_account', to: 'my_account#index'
  get 'invite', to: 'invite#show'
  get 'invite/:id', to: 'invite#show'

  root 'static_pages#home'
end

When I go to /sign_in, I get an exception like:

undefined method `session_path' for #<#<Class:0x007f9b7173af28>:0x007f9b713d8da8>

in:

~/.rvm/gems/ruby-2.1.1/gems/devise-3.2.4/app/views/devise/sessions/new.html.erb

in line:

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>

If I add :database_authenticatable to user.rb it all starts working, but I want my users to be able to sign-in through Google OAuth2 only, so I don't want :database_authenticable. It looks like session_path is not available for some reason, but I am not sure why and how to make it available.

Thanks, Jen

解决方案

You need to reboot the rails server. That was the solution for me.

这篇关于未定义的方法`session_path'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆