【问题标题】:Re-rendering Rails partial AFTER saving the model through a form通过表单保存模型后重新渲染 Rails 部分
【发布时间】:2016-06-14 13:47:03
【问题描述】:

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

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

【问题讨论】:

  • 在渲染中使用'locals'选项将变量传递给视图。例如渲染部分:“表单”,本地人:{user:@user} ...更多信息:guides.rubyonrails.org/…

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


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

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

【讨论】:

    【解决方案2】:

    在 update.js.erb 中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2012-03-03
      • 2019-09-07
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多