我有一个has_many
答案(一个模型)的问题模型,每个belongs_to
一个问题。
对于每个问题的show
页面,例如/ questions / 1或/ questions / 2,我希望用户输入答案。
表单正在运行,但问题是似乎问题变量没有传递到表单发布到的答案控制器...想法?
class QuestionsController < ApplicationController
def show
@question = Question.find(params[:id])
@answer = @question.answers.build
end
class AnswersController < ApplicationController
def create
@answer = @question.answers.build
redirect_to 'questions/:id'
end
我收到错误:未定义的方法`答案&#39; for nil:AnswersController创建方法中@answer = @ question.answers.build的NilClass。
是时候使用全局变量吗?
顺便说一句,简短的版本是我试图进行Quora / Stack Exchange克隆。是否有一个教程已经完成了,因为那个人会很棒......
答案 0 :(得分:1)
所以它不应该。这绝对不是全局变量的地方。
当您为某个问题创建答案时,它应该发布到类似/questions/2/answers
的内容,该内容应指向AnswersController #create action。
在该操作中,您可以使用params[:question_id]
(来自网址)加载正确的问题记录,然后为该问题创建答案。
(您希望创建而不是在您的控制器中构建,并且您的重定向也是错误的)