1

私は Rails 3 を学習し、Q&A アプリのチュートリアルに取り組むのは初めてです。特定の回答を質問に関連付ける際に、なぜこれを行うことができない (エラーが発生する) のか疑問に思っています。現在のユーザーに対して機能します...

class AnswersController < ApplicationController

before_filter :auth, only: [:create]

def create
    @question = Question.find(params[:question_id])
    **@answer = Answer.new(params[:answer])
    @answer.question = @question
    @answer.user = current_user**
    if @answer.save
        flash[:success] = 'Your answer has been posted!'
        redirect_to @question
    else
        @question = Question.find(params[:question_id])
        render 'questions/show'
    end
end
end

チュートリアルでは、これが正しい方法であると述べています。

class AnswersController < ApplicationController

before_filter :auth, only: [:create]

def create
    @question = Question.find(params[:question_id])
    **@answer = @question.answers.build(params[:answer])**
    @answer.user = current_user
    if @answer.save
        flash[:success] = 'Your answer has been posted!'
        redirect_to @question
    else
        @question = Question.find(params[:question_id])
        render 'questions/show'
    end
end
end
4

1 に答える 1

1

次のことを行う

@answer = @question.answers.build(params[:answer)

こうするのと同じか

@answer = Answer.new(params[:answer])
@answer.question_id = @question.id

aを実行buildすると、関係属性が新しい回答に追加されます。この場合は、question_id

エラーに関しては、受け取ったエラーの種類を教えていただけますか?

于 2013-05-06T14:10:20.230 に答える