2011-05-04 74 views
1

我花了3天的時間試圖在模型中編寫示波器。在這一點上,我不在乎生產最佳的解決方案......我只是想讓這個工作。在rails 3應用程序中,我在控制器中有以下代碼。Rails 3中的映射數組錯誤

@questions = Question.all 
@ans = Answer.where(user_id = current_user.id) 
@answers = @questions.map { |q| [q, @ans.find_by_question_id(q.id)] } 

每個答案記錄都有一個question_id字段,因此它可以鏈接到相應的問題。我試圖讓答案數組按照與問題相同的順序列出。

視圖中的以下代碼呈現答案,但未按正確的順序顯示。

<% @ans.each do |q| %> 
    <%=q.score%><br/> 
<% end %> 

我則數組改變到應該產生適當的順序的答案映射陣列。

<% @answers.each do |q| %> 
    <%=q.score%><br/> 
<% end %> 

我得到以下錯誤:

undefined method `score' for #<Array:0x10335ef90> 

任何幫助表示讚賞。謝謝。

回答

2

而不是q.score你可能想要q[1].score,因爲q是真正的問題和答案的兩個項目數組。第二項(q[1])會給你答案。

0

這是因爲q不是Answer,而是包含QuestionAnswer的數組。所以你可以把它改成q[1].score。更好的方法是打開塊變量中的數組,如下所示(注意圓括號):

<% @answers.each do |(question, answer)| %> 
    <%= answer.score %><br/> 
<% end %>