我已经在预先存在的“用户”模型中集成了设计。这就是它的样子
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
include AstroModels::Users::Validation
当我浏览任何身份验证页面时。我得到以下错误
ActionView::Template::Error (undefined method `[]' for nil:NilClass):
我使用&lt;%resource.inspect%&gt;进行了调试。 ,我得到以下错误,
<#User not initialized>
在以下一行
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
此外,我通过更改
尝试了堆栈溢出答案<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
到
**<%= form_for(resource_name, :as => resource, :url => session_path(resource_name)) do |f| %>**
但似乎没有用。仅供参考,我正在将设备集成到使用rails4的应用程序中。
我的应用程序助手文件中有更多iinfor。
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
任何建议/解决方法都非常有用,谢谢。
答案 0 :(得分:2)
在我的情况下,我继承了我的自定义用户模型与ActiveRecord :: Base类和ActiveRecord :: Base,当我们继承任何类时,我们不能在该自定义模型中拥有自己的初始化方法。所以我在自定义模型中注释掉了初始化方法,错误消失了。
希望它会对你有所帮助。
答案 1 :(得分:0)
您没有提及routes.rb或创建会话所需的视图,这会初始化用户。你完成了那些任务吗?您应该从Devise安装生成器开始添加代码,包括初始化器:
rails generate devise:install
routes.rb必须包含为您的应用程序设置的devise_for。一个例子,不一定适合您:
Sampleapp::Application.routes.draw do
root :to => "home#index"
devise_for :users, :controllers => {:registrations => "registrations"}
resources :users
end
您可以访问Devise gem中的视图,也可以将它们复制到您自己的应用程序中,以便可以像这样自定义:
rails generate devise:views
这将提供app / views / devise视图以及登录和创建会话所需的app / views / layouts。