在Rails 3控制器中创建数组



有些客户会有30个问题和答案,有些会有20个,有些会有10个。那些有10个或20个的可以增加到下一个级别。在控制器中,我需要填写缺失的答案。我希望在控制器中创建一个与问题和答案匹配的数组,然后将一个数组发送给视图。

@questions = Question.order("qtype, position")
@answers = Answer.where(user_id = current_user.id)
@questions.each do |q|
   @qa[q,0] = q.question
   @qa[q,1] = @answers.find_by_question_id(q.id)
   if @qa[q,1].empty?
      @qa[q,1] = 0
   end
end

我得到"未定义的方法'问题'。"我不知道我做错了什么。

谢谢。

你在一个Ruby数组(@questions)上调用.question,它没有question方法。

块参数q是您希望在每次迭代中访问的单个问题。

在ruby中使用map:

可以很容易地做到这一点
@qa = @questions.map { |q| [q, @answers.find_by_question_id(q.id)] }

因为您已经加载了一个正确过滤的答案数组,所以这样做实际上会更高效:

@qa = @questions.map { |q| [q, @answers.detect {|a| a.question == q}] }

你最好花点时间阅读一下ruby中的Array和Enumerable

相关内容

  • 没有找到相关文章

最新更新