【问题标题】:js post data to rails & refreshing viewjs将数据发布到rails并刷新视图
【发布时间】:2016-10-13 21:23:05
【问题描述】:

我有一个问题(哦,不)。 使用rails,我正在显示可排序的表,我将行移动,ajax 将数据(哪一行)发布到rails 控制器,它将数据保存到数据库(render :nothing => true)。

现在我希望重新加载页面,因为应该进行新的计算。 如果我在 js 中使用重新加载(成功:window.location.reload();)页面重新加载但使用旧数据。我也使用了延迟 (setTimeout(,.., 1000)) 没有成功。

数据库中似乎还没有数据。

如何在数据为 POST 的 Rails 控制器中重新加载。 或者其他解决方案。

LP dejan

【问题讨论】:

  • 你在哪里使用reload?如果数据来自 Rails 端,那应该可以,除非您没有等待 Ajax 调用完成。此代码应在 Ajax 回调中(控制器处理后,重新加载页面)
  • 您能否刷新页面并查看更改?我只是想知道有一个错误,当您刷新它时,它正在使用表格。
  • 好吧,当所有条件都满足时 js (Coffeescript) post data : $.ajax( type: 'POST' url: '/cashflow/update_row_order' dataType: 'json' data: ndata success: document .location.reload() # 太慢 )
  • 好吧,当所有条件都满足时 js (Coffeescript) post data : $.ajax( type: 'POST' url: '/cashflow/update_row_order' dataType: 'json' data: ndata成功:document.location.reload() # too slow )
    then to
    def update_row_order if buen_params[:bid] != "0" @bthing = current_user.taccount. buens.real.active.find(buen_params[:bid]) @bthing.update_attribute(:widate1, buen_params[:nwidate1]) @bthing.save! end 什么都不渲染:true end

标签: javascript ruby-on-rails post reload


【解决方案1】:

如果要重新加载页面,请在视图中创建一个 javascript 文件并在视图文件中编写重新加载代码。

在您的控制器名称#action_name 中

def action_name 
 format.js 
end

在你的视图(action_name.js)文件中,只需写:

window.location.reload();

有效。

【讨论】:

  • 感谢所有及时回复。如果问题解决了,我会尽力告诉你。
  • 对不起,但不起作用。执行渲染但仍然没有重新加载页面。即使我在后端输入控制器 format.html { redirect_to cashflow_tliquidity_path },也可以看到 rails 正在生成页面,但在浏览器中没有变化。
【解决方案2】:

在你的帮助下我做到了。谢了。

所以在 POST 的 JS 代码中,我必须将 dataType 更改为“脚本”

  $.ajax(
      type: 'POST'
      url: '/x/update_row_order'
      dataType: 'script'
      data: ndata

  )

然后按照行动建议

def update_row_order
  # ndata saved in model
  render js inline: "location.reload();"
end

作为 window.location.reload();没用 就是这样。再次感谢您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2017-06-07
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多