Devise中的NoMethodError [注册&会话]未定义的方法`new'为零:NilClass

时间:2013-11-07 14:26:45

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

Showing ...views/devise/sessions/new.html.erb where line #3 raised:

undefined method `new' for nil:NilClass
Extracted source (around line #3):

<h2>Sign in</h2>

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>

Registrations中的情况完全相同,并且所有设计了我们实际配置的路线。

目前尚不清楚最近的变化带来了什么。

我们尝试过: *

  • 列表项
  • 分贝:重置
  • 重新安装设计
  • 完全重建所有设计模型和路线和表格

总是出现同样的错误:

undefined method `new' for nil:NilClass

有关stackoverflow的其他问题似乎适用于其他方法,例如: []newauthorize ...新的nil是我们唯一得到的。任何想法都非常赞赏。

EDITS

user.rb(model)

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :recoverable, :rememberable,   :trackable, :validatable

has_many :journeys  # n.b: must pluralize here.
end

路线(用户路线)

user_registration_path   POST    /users(.:format)    devise/registrations#create
PATCH    /users(.:format)    devise/registrations#update
PUT  /users(.:format)    devise/registrations#update
DELETE   /users(.:format)    devise/registrations#destroy
users_path   GET     /users(.:format)    users#index
POST     /users(.:format)    users#create

的routes.rb     devise_for:admins     devise_for:用户     资源:用户

get 'journeys', to: 'users#journeys'
resources :journeys

root to: "static#index"

get '/journey/new', to: 'journeys#new'    # For some reason "resources :journeys"  isn't activating the new method.

get '/admins/add_admin', to: 'admins#add_admin'

devise_scope :user do
  get 'users/sign_out', to: 'session#destroy'
  # Don't need to define sign_in here, because it works already (unlike admin).
end

devise_scope :admin do 
  get 'admins/sign_out', to: 'devise/sessions#destroy'
  get 'admins/sign_in', to: 'devise/sessions#new'
end

3 个答案:

答案 0 :(得分:1)

对于它的价值,这里有一个与Devise兼容的google_directions版本:https://github.com/calebhaye/google-directions-ruby

答案 1 :(得分:0)

尝试将以下代码添加到应用程序帮助程序

  def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

  def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
  end

答案 2 :(得分:0)

我添加了宝石: 'google_directions'最近似乎是造成这个问题的原因。

它需要'extlib/hash',并且出于某种原因,这与devise不相称。

相关问题