我很感谢那些帮助我在这里顺利完成诊断过程的人。我重写了代码,希望它能在jQuery的未来版本中继续使用。
不过,我担心两件事:
- 我有没有编码过其他东西会回来咬我的尾巴
- 相当多的客户完成了问题,关闭浏览器,然后期望他们的工作在他们回来完成比赛。所以整个形式是每次单选按钮时提交点击(100多条记录)。我想知道关于创建每个问题的表格没有收到任何回复。有一些吗一次提交一个答案的方式而不是整个形式
视图:
<%= form_tag update_result_answers_path, :remote => true do %>
<% @answers.each do |q| %>
<tr>
<td><%= q[0].question %></td>
<% [ 1, 2, 3, 4, 5 ].each do |f| %>
<% if f == q[1].score
chk="checked='checked'"
else
chk=""
end %>
<td>
<input "<%= chk %>" class="submittable" name="answer[<%=q[1].id%>]" type="radio" value="<%= f %>" />
</td>
<% end %>
</tr>
<% end %>
<% end %>
application.js:
$('.submittable').live('change', function() {
$(this).parents('form:first').submit();
return false;
}
);
控制器:
def update_result
params[:answer].each_pair do |key,value|
@ans = Answer.find(key.to_i)
@ans.update_attributes(:score => value)
end
end
_index.js.erb:
$("#answers").html("<%=escape_javascript(render(@answers)) %>");
谢谢!
我会保持您的视图不变,并更改application.js,使其尽可能不引人注目:
$('.submittable').live('change', function() {
$.post(
$(this).closest('form').attr('href'),
$(this).serialize()
);
});
编辑:我没看到你想在事后给出答案。我不确定如何使用此解决方案来避免代码重复。。。