红宝石:2.0
导轨:4.0
我正在尝试从我的测验应用程序中提取答案选择。用户在此表单中选择 = 他们认为是正确答案的单选按钮:
<%= form_tag do |f| %>
<%= hidden_field_tag :quiz_id, @quiz.id %>
<% @quiz.questions.each do |question| %>
<div class="question">
<p><%= question.text %></p>
<ul>
<% question.answers.each do |answer| %>
<% if answer.text.length > 0 %>
<li>
<%= radio_button_tag "[questions][#{question.id}]selected_answer", answer.id %>
<%= answer.text %>
</li>
<% end %>
<% end %>
</ul>
</div>
<% end %>
<%= submit_tag "Score this Quiz" %>
<% end %>
这些参数似乎可以通过 - 您可以使用 Spike 在日志中看到它们:
但是,我不知道如何调用这些参数,这是我的控制器逻辑:
def score
@answers = []
@quiz = Quiz.find(params[:quiz_id])
@quiz.questions.each do |question|
@answers << params[:questions[question.id][:selected_answer]]
end
end
但这会引发错误:no implicit conversion of Symbol into Integer
我如何去抓住selected_answer
每个问题?
更新:
我已在评论中进行了建议的更改:
形式
<%= radio_button_tag "questions[#{question.id}][selected_answer]", answer.id %>
控制器
@quiz.questions.each do |question|
@answers << params[:questions][question.id][:selected_answer]
end
这现在给了我这个错误:undefined method
[]' for nil:NilClass` 在这一行:
@answers << params[:questions][question.id][:selected_answer]