Rails - 控制器问题 - 无法创建Post

时间:2012-05-06 13:13:07

标签: ruby-on-rails controller

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

undefined method `Post' for false:FalseClass

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

posts_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

1 个答案:

答案 0 :(得分: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