你能为jQuery,Rails 3更新渲染一个包含多个表单而不是一个表单的页面吗?

我有一个有100多个问题的rails 3表单。 每次单击与答案关联的单选按钮时,表单将返回所有100多个问题的答案。 因此,当某人完成时,将为所有100个问题更新100条记录。 共有10,000条记录更新。

我试图通过如何更改代码来更新每次点击只有一个答案,而不是全部100+。

如果你想进入那么多细节,代码如下。 谢谢。

表格:

 true do %>     'submittable' %>    

application.js中:

 $('.submittable').live('change', function() { $(this).parents('form:first').submit(); return false; }); 

控制器:

  def update_result @answers = [] params[:answer].each_pair do |key,value| ans = Answer.find(key.to_i) ans.update_attributes(:score => value) @answers < true end 

好的,我想我现在遇到了问题。 他是我会做的:

 <%= form_tag update_score_answer_path(answer), :id => "answer_#{answer.id}_form", :remote => true do %> <%= answer.question %> <%# didn't understand this here, maybe it's outside of the loop? %> <% [ 1, 2, 3, 4, 5 ].each do |f| %> <%= radio_button_tag answer.id, f, f == answer.score, :class => 'submittable' %> <% end %> <% end %> 

然后循环遍历它们:

 <% @answers.each do |answer| %> <%= render 'answers/answer_form', :answer => answer %> <% end %> 

然后在控制器上

 def update_score @answer = Answer.find(params[:answer_id]) @answer.score = params[:answer][:score] @answer.save end 

并用js回应

 $('#answer_<%= @answer.id %>_form').replaceWith("<%= escape_javascript( render 'answers/answer_form', :answer => @answer ) %>") 

控制器可能不正确,但你得到了图片。 如果你愿意,你也可以只更新单选按钮,只需返回javascript。

希望这可以帮助

此外,如果需要,您可以使用切换渲染

 render :partial => 'lala', :locals => { :answer => object }