Ruby on rails 如何在RubyonRails中重新加载当前页面?

Ruby on rails 如何在RubyonRails中重新加载当前页面?,ruby-on-rails,ruby,ruby-on-rails-3,url-routing,Ruby On Rails,Ruby,Ruby On Rails 3,Url Routing,我目前在我的标题栏中有一个登录弹出窗口,它位于我网站的每个页面上。我希望能够在成功登录后重新加载此人所在的当前页面。如何在控制器中执行此操作 def create #declaring and defining user variable stuff if user.save #reload current page <--how do I do this? end end def创建 #声明和定义用户变量 如果user.save #重新加载当前页面对于我的应用程序,

我目前在我的标题栏中有一个登录弹出窗口,它位于我网站的每个页面上。我希望能够在成功登录后重新加载此人所在的当前页面。如何在控制器中执行此操作

def create
  #declaring and defining user variable stuff
  if user.save
    #reload current page <--how do I do this?
  end
end
def创建
#声明和定义用户变量
如果user.save

#重新加载当前页面对于我的应用程序,我使用
redirect\u to:back
,它就做到了。然而,我怀疑这在非通用用例(用户来自一个特殊页面?)中可能有错误,但到目前为止我还没有在我的应用程序中找到它。

如果您正在寻找通过XHR请求刷新页面(通常是
重定向到:back
)的方法,您不必寻找更改响应类型的方法,只需告诉页面使用内嵌JS重新加载即可

format.js{render inline:“location.reload();”}

就像提到的一样,这应该是一个respond_to block,如下所示:

respond_to do |format|
  format.js {render inline: "location.reload();" }
end
上面的答案对我有用。然而,在Rails 3中,为了避免出现“ArgumentError(参数太少)”错误,我不得不将其放在
respond_to
块中:


在Rails 5
中,通过以下方式重定向到:back

自从Rails 5(或者更早的版本)以来,您有了一个
request.referer
方法。您只需将控制器重定向到Referer,它就会打开请求来源的页面


重定向\u至request.referer,注意:“您被重定向了”
Rails 5引入了替代功能:

redirect_back(fallback_location: root_path)
只要知道HTTP_REFERER,它就会重定向回。 否则,它将重定向到备用位置

在Rails 5.0中,
redirect\u to:back
已被弃用,并且已被删除,因为Rails 5.1

基于的和的答案构建,重新加载函数接受一个参数,以强制页面从服务器重新加载,而不是从缓存重新加载。控制器逻辑可以设置参数,如用户登录成功或失败,以在发送到页面时触发所需的行为

# force_get = controller_logic ? true : false

respond_to do |format|
  format.js { render inline: "location.reload(#{force_get});" }
end
更新: forceGet选项的逻辑已被弃用。如果确实要从服务器重新加载,可以使用以下逻辑:

# force_get = controller_logic ? true : false

respond_to do |format|
  format.js { render inline: force_get ? "window.location.href = window.location.href;" : "location.reload();" }
end

只需重定向到函数中所需的任何url:

redirect_back(fallback_location: root_path)

将\u重定向到\u曾经\u的路径

此语法正是您想要的。。。在Rails 6中工作

  respond_to do |format|
    format.html { redirect_to request.referrer, notice: "User was successfully WHATEVER." }
  end

这对我来说很有用。你不会重新加载当前页面,就像你要创建一个动作然后再返回一样。。。如果你使用AJAX,那么你只需更新显示一个家伙登录的部分。。。并让他留在那一页。对于Rails 5,
redirect\u to:back
的文档已被弃用,在5.1中被删除,而应该使用
redirect\u back(fallback\u位置:fallback\u位置)
。这是一个有帮助的答案,它在2020年与Rails 6配合得很好,顺便说一句,redirect\u to:back
似乎对我不起作用,而这段代码可能会回答这个问题,提供关于为什么和/或这段代码如何回答这个问题的附加上下文可以提高它的长期价值。这个解决方案非常适合我的rails 6应用程序!你是在哪里偶然发现这种方法的?找我花了不少时间。
  respond_to do |format|
    format.html { redirect_to request.referrer, notice: "User was successfully WHATEVER." }
  end