2012-03-02 14 views
0

ユーザー、カテゴリ、ストーリー、コメントなどのコントローラがあります。私がコメントをするまで、すべては大丈夫でした。私のDBでは、コンテンツuser_id、story_idを保存したいが、テーブルは空です。 @ comment.saveはfalseです。ここに私のコードの一部です:レールで結果をDBに保存できません

CommentsController:StoriesControllerため

def create 
    @story = Story.find(params[:story_id]) 
    @comment = @story.comments.create(params[:comment]) 
    if @comment.save 
    flash[:success] = "Successfull added comment" 
    redirect_to stories_path 
    else 
    render 'new' 
    end 
end 

show.html.erb:StoriesControllerで

<b><%= @story.title %></b> <br/><br/> 

<%= @story.content %> <br/><br/> 

<% @story.comments.each do |comment| %> 
    <b>Comment:</b> 
    <%= comment.content %> 
<% end %> 

<%= form_for([@story, @story.comments.build]) do |f| %> 
    <div class="field"> 
    <%= f.label :content %><br /> 
    <%= f.text_area :content %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Add" %> 
    </div> 
<% end %> 

私は同じことをしましたが、どのように今私が理解することはできませんそれをやる。

def create 
    @categories = Category.all 
    @story = current_user.stories.build(params[:story]) 
end 
+0

で偽のですか?ストーリーとコメントの間に参加を設定していますか? – ellawren

+0

私はどのようにしてサーバーを再起動したらエラーメッセージの問題は修正されましたが、コメントテーブルi DBは空です。私はstory.rb has_many:commentsとcomment.rb-belongs_to:storyにあります。 route.rbでは私が持っている: リソース:コメント エンド – user1107922

+0

今、私はエラーメッセージを持って、再び..この行で:@comment = current_user.comments.create(のparams [:コメント]) – user1107922

答えて

1

エラー:「nilのための未定義のメソッド:NilClassは」いつも私はそれはしていないときに、モデル/クラスがインスタンス化されていることを仮定していたときに私を噛まないように思えます。あなたがライン上でこのエラーを取得している場合:

@comment = current_user.comments.create(params[:comment]) 

私はあなたのコードは、ログインしているユーザーなしで実行されているので、CURRENT_USERがnilであると推測します。

if current_user 
    @comment = current_user.comments.create(params[:comment]) 
else 
    redirect :root, :notice => "Sorry you must be registered and logged in to comment" 
end 

・ホープ、このことができます:あなたの@commentコードの構造は、あなたがこのアプローチを試みる場合がありますので、あなただけの、登録ユーザーがコメントを作成してみましょうしようとしていることを示しています。

+0

が変更さ物語が リソースを行うにそれはあなたが書いたものですが、私がログインしているときに問題はここにあります。そして、あなたが推測するこの行にエラーメッセージがあります。 – user1107922

0

私は非常にばかです!私はユーザーモデルのhas_manyコメントを見逃しました..しかし、コメントの内容をDBに保存することができず、テーブルのコメントが空であるため、問題はまだここにあります。 comment.save @

は、私の場合、具体的エラーの原因となっている行

def create 
    @story = Story.find(params[:story_id]) 
    if current_user 
    @comment = current_user.comments.create(params[:comment]) 
    end 

    if @comment.save 
    flash[:success] = "Successfull added comment" 
    redirect_to story_path(@story) 
    else 
    render 'new' 
    end 
end 
+0

いくつかのことを試してみてください:1)あなたのコメントにuser_id列とbelongs_to文を追加したことを確認する2)論理問題:最初のif文が失敗したとき@comment変数が作成されず、 。 3)あなたのすべてのコメントフィールドがattr_accessibleであることを確認してください - あなたがこれに関する警告を受け取っているかどうか確認するためにdevログを確認してください。 4)あなたのコードにテストコメントを手動で作成し、保存してみてください。(create ...(params [:comment])5)サーバーコンソールparams [:comment]にputsあなたに送り返しています。 –

関連する問題