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