Rails - after_update:当数据库中的记录更新时,reload_page不刷新页面

时间:2016-03-10 15:38:03

标签: ruby-on-rails

这是我的控制器(ClientController):

class ClientController < ApplicationController
  layout 'application'

  before_filter :client_selected, :only => [ :index,:show]
  after_filter  :reload_page, :only => :update

  def reload_page
    respond_to do |format|
      format.html {redirect_to :controller=>"client", :action=>"show", :layout => 'application'}
      format.js {render inline: "location.reload();" }
    end

    def index
    end

    def show
    end
  end

不知道我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您需要我们展示与此相关的观点。当数据库记录改变时,控制器不会神奇地“触发”,它只处理来自浏览器的传入请求。你有一些定期打电话的JavaScript吗?

你的defs不应该在def reload_page内。

编辑:此外,您可能根本不需要使用某些after_filter,只需进行is_update_necessary操作并像其他任何一样调用它。

答案 1 :(得分:0)

正如@ roman-roman所提到的,你在重载页面方法中有你的索引和显示视图......我非常怀疑你打算做什么。

您不必调用方法来使页面在更新时重新加载。如果您要从编辑页面向更新操作提交表单,则页面将在保存后自然重新加载。

典型的更新操作如下所示:

@name_of_model = NameOfModel.find(params[:id])

respond_to do |format|
  if @name_of_model.update_attributes(name_of_model_params)
  # whatever the formats you want: but rendering html will include a    refresh
end

摆脱重新加载页面,从reload_page中取出那些方法并从那里开始。只需重新加载页面即可。

如果您需要重新加载bc,请使用ajax进行更新...在javascript中的成功或.done函数中执行此操作。