我不确定它是否相关但是因为我添加了设计我得到一个无方法错误,如下所示。未定义的方法`posts'为nil:NilClass 这具体针对以下代码行。
@post = current_user.posts.build
我宁愿被困在这里,因为我检查了所有明显的,除非我删除代码所以它读取
@post = Post.new
我无法添加新帖子。我在下面添加了完整的代码。 帖子控制器
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
发布模型
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
新的HTML haml
%h1 New Post
= render 'form'
答案 0 :(得分:4)
代码看起来不错......
但是如果没有用户登录会发生什么? 尝试添加
before_action :authenticate_user!
或询问
user_signed_in?
在您尝试访问登录用户之前。
答案 1 :(得分:0)
需要了解您如何集成设备。但是,也许你没有签署nil
错误的原因。