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

时间:2016-06-14 13:47:04

标签: javascript ruby-on-rails forms ruby-on-rails-4

我在提交remote: true表单后重新呈现部分内容,但我的问题是它似乎重新呈现部分BEFORE完全完成表单的更新操作。因此,它在页面上呈现旧数据,并且仅在完全刷新之后(或者当我再次提交表单时)显示更新的信息。有没有办法强制应用程序在完成所有操作后重新渲染部分,以便只显示新信息?或者我在这里错过了一步?

  

update.js.erb:

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

owner_controller.rb

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

2 个答案:

答案 0 :(得分:0)

在update.js.erb

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

答案 1 :(得分:0)

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

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