2012-05-06 46 views
0

投稿を作成できないコントローラがあります。私が作成した場合、それは私のアクションコントローラの例外を与えるポスト(しよう):私は偽に遭遇していないRails - コントローラの問題 - 投稿の作成に失敗する

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 

UPDATE:私は宣言したユーザークラスがあり、多くは以下の通りです。まだ投稿の関連付けと作成を妨げる。

あなたの問題はラインである
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 
+0

これは 'current_user'が現在' create'メソッドで値 'False'を保持していることを意味します。 'current_user'が正しく作成され、設定されていることを確認してください。 –

答えて

2

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

current_userが偽のように見える、あなたが期待したもの、おそらくではありませんが、関係なく、current_userによって返される可能性が何に何の方法Postはありません(Postはモデルクラスなので)。

次のようなもので、 'ビルド' にポストを意味している可能性があります:

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

これはどんなcurrent_userがあることを前提としていhas_many :posts(うまくいけば、User?)。

+0

返答いただきありがとうございます。上記のUserモデルを追加しました。私はすでにhas_manyを宣言しています。 – Andrew

+0

私が言及したように、問題は2つあります: 'current_user'はfalseです。そこでそこから始め、' current_user'が 'User'のインスタンスを返します。それから 'current_user.Post.new(...)'行を修正する必要があります( 'current_user'が' User'インスタンスの後であっても、 'Post'という名前のメソッドはまだありません)。 – rfunduk

+0

ありがとう!今すぐ稼働! – Andrew

関連する問題