我如何重新加载Ruby on Rails中的当前页面?

我目前在我的网站的每个页面上的标题栏中都有一个loginpopup窗口。 我希望能够在login成功后重新加载当前页面。 我如何在控制器中执行此操作?

def create #declaring and defining user variable stuff if user.save #reload current page <--how do I do this? end end 

谢谢

对于我的应用程序,我使用redirect_to :back ,它的窍门。 然而,我怀疑这可能有一个非常规用例(用户来自一个特殊的页面?)的错误,但我还没有发现它到目前为止在我的应用程序。

如果您正在寻找一种方法来使页面刷新(通常是redirect_to :back ),您不必寻找一种方法来改变响应types – 只要告诉页面使用内联JS重新加载。

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

像埃琳娜提到的,这应该在响应块,如下所示:

 respond_to do |format| format.js {render inline: "location.reload();" } end 

上面的Archonic的答案为我工作。 然而,在Rails 3中,我不得不把它放在一个respond_to块,以避免“ArgumentError(太less的参数)”的错误:

 respond_to do |format| format.js {render inline: "location.reload();" } end 

在Rails 5中redirect_to :back 改进了:

  redirect_back(fallback_location: root_path) 

由于Rails 5(或者也许是旧版本),你有一个request.referrer方法。 您只需将控制器redirect到引用链接,然后打开请求来自的页面。

redirect_to request.referrer, notice: "You're being redirected"