【问题标题】:NoMethodError in Devise [Registrations & Sessions] undefined method `new' for nil:NilClass设计 [Registrations & Sessions] 中的 NoMethodError 未定义方法“新”,用于 nil:NilClass
【发布时间】:2013-11-19 05:50:43
【问题描述】:
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 的情况完全一样,所有设计出我们实际上配置的路由。

目前尚不清楚最近发生的变化。

我们尝试过: *

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

总是同样的错误:

undefined method `new' for nil:NilClass

关于 stackoverflow 的其他问题似乎是针对其他方法的,例如[], new, authorize... new for nil 是我们唯一得到的。任何想法都非常感谢。

编辑

user.rb(模型)

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

【问题讨论】:

  • 你能展示你的设计路线和你用于示波器的模型吗?
  • 我已经添加了我认为您要求的代码,如果您需要更多信息,请告诉我。干杯。

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


【解决方案1】:

不管怎样,这里有一个与 Devise 兼容的 google_directions 版本:https://github.com/calebhaye/google-directions-ruby

【讨论】:

  • 哈!队友的欢呼声。几个月前就可以做到这一点:)这是多么痛苦。再次感谢。
【解决方案2】:

尝试将以下代码添加到您的应用程序助手中

  def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

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

【讨论】:

    【解决方案3】:

    我添加了宝石: 'google_directions' 最近,这似乎是导致问题的原因。

    它需要'extlib/hash',但由于某种原因,这与devise 不匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2016-06-15
      • 2013-02-17
      • 2014-03-16
      • 1970-01-01
      • 2013-11-14
      • 2013-01-14
      • 2017-10-02
      相关资源
      最近更新 更多