Rails 安装 devise 后没有方法错误?

Rails no method error since installing devise?

我不确定它是否相关,但自从我添加了设计后,我收到了一个无方法错误,内容如下。 nil:NilClass 的未定义方法“帖子” 这是专门针对下面这行代码。

@post = current_user.posts.build

我被困在这里,因为我已经检查了所有明显的,除非我删除代码,所以它显示

@post = Post.new

否则我无法添加新帖子。我在下面添加了完整的代码。 Post控制器

class PostsController < ApplicationController
before_action :find_post, only: [:show, :edit, :update, :destroy]

def index
    @posts = Post.all.order("created_at DESC")
end

def show
end

def new
    @post = current_user.posts.build
end

def create
    @post = current_user.posts.build(post_params)

    if @post.save
        redirect_to @post
    else
        render 'new'
    end
end

def edit
end

def update
    if @post.update(post_params)
        redirect_to @post
    else
        render 'edit'
    end
end

def destroy
    @post.destroy
    redirect_to root_path
end

private

def find_post
    @post = Post.find(params[:id])
end

def post_params
    params.require(:post).permit(:title, :content)
end
end

Post 型号`

 class Post < ActiveRecord::Base
    belongs_to :user
 end

用户模型

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 :posts
end

new html haml

%h1 New Post

= render 'form'

代码看起来不错...

但是如果没有用户登录会怎样? 尝试添加

before_action :authenticate_user!

或询问

user_signed_in?

在您尝试访问登录用户之前。

需要查看您是如何集成设备的。但是,是的,也许你没有登录这就是 nil 错误的原因。