在两个控制器之间创建变量

时间:2014-03-13 04:06:17

标签: ruby-on-rails variables global-variables

我有一个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克隆。是否有一个教程已经完成了,因为那个人会很棒......

1 个答案:

答案 0 :(得分:1)

所以它不应该。这绝对不是全局变量的地方。

当您为某个问题创建答案时,它应该发布到类似/questions/2/answers的内容,该内容应指向AnswersController #create action。

在该操作中,您可以使用params[:question_id](来自网址)加载正确的问题记录,然后为该问题创建答案。

(您希望创建而不是在您的控制器中构建,并且您的重定向也是错误的)