0

有一个无法创建帖子的控制器。当我创建(尝试)一个帖子时,它给了我一个动作控制器异常:

undefined method `Post' for false:FalseClass

我以前没有遇到过 false:FalseClass 。任何帮助表示赞赏!

post_controller.rb:

class PostsController < ApplicationController
  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end

  # GET /posts/1
  # GET /posts/1.json
  def show
    @post = Post.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @post }
    end
  end

  # GET /posts/new
  # GET /posts/new.json
  def new
    @post = Post.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @post }
    end
  end

  # GET /posts/1/edit
  def edit
    @post = Post.find(params[:id])
  end

  # POST /posts
  # POST /posts.json
  def create
    @post = current_user.Post.new(params[:post])
    respond_to do |format|
      if @post.save
        format.html { redirect_to @post, notice: 'Post was successfully created.' }
        format.json { render json: @post, status: :created, location: @post }
      else
        format.html { render action: "new" }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /posts/1
  # PUT /posts/1.json
  def update
    @post = Post.find(params[:id])

    respond_to do |format|
      if @post.update_attributes(params[:post])
        format.html { redirect_to @post, notice: 'Post was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /posts/1
  # DELETE /posts/1.json
  def destroy
    @post = Post.find(params[:id])
    @post.destroy

    respond_to do |format|
      format.html { redirect_to posts_url }
      format.json { head :no_content }
    end
  end
end

更新:我声明的用户类有很多如下。仍然阻止关联和创建帖子。

    class User < ActiveRecord::Base
  has_many :posts
  authenticates_with_sorcery!

  attr_accessible :username, :password, :password_confirmation
  attr_accessible :email
  validates_confirmation_of :password
  validates_presence_of :password, :on => :create
  validates_presence_of :username
  validates_uniqueness_of :username, :on => :create
  validates_presence_of :email
  validates_uniqueness_of :email, :on => :create

end
4

1 回答 1

2

你的问题在于这条线:

current_user.Post.new(params[:post])

current_user似乎是错误的,这可能不是您所期望的,但无论如何都没有任何方法Post可以返回current_user(因为Post是模型类)。

您可能打算“建立”一个帖子,例如:

current_user.posts.new(params[:post])

这假设任何current_user是 (a User,希望?) has_many :posts

于 2012-05-06T13:16:34.427 回答