关于javascript:通过表单保存模型后重新渲染Rails部分

Re-rendering Rails partial AFTER saving the model through a form

我在提交remote: true表单后重新呈现部分表单,但是我的问题是它似乎在完全完成表单的更新操作之前重新呈现了部分表单。结果,它在页面上呈现旧数据,并且仅在完全刷新后(或当我再次提交表单时)才显示更新的信息。是否有一种方法可以迫使应用程序在完成所有操作后重新渲染部分内容,以便仅显示新信息?还是我错过了一步?

update.js.erb:

1
$("#methods").html("<%= escape_javascript(render partial: 'methods') %>");

owner_controller.rb

1
2
3
4
5
6
7
8
9
10
11
respond_to :html, :js, :json

def update
  if owner.update_attributes(owner_params)
    respond_to do |format|
      format.js
    end
  else
    fail_update
  end
end


1
$("#methods").html("<%= escape_javascript(render partial: 'methods', locals: {owner: @owner}) %>");

,并假设您在操作之前设置所有者,请将您设置的变量从所有者更改为@owner。


在update.js.erb

1
2
3
4
$("#methods").html("<%= j(render partial: 'methods') %>");
<% unless @owner.errors.present? %>
 $('#some_form')[0].reset()
<% end %>