Eve*_*ner 43 ruby ruby-on-rails url-routing ruby-on-rails-3
我目前在我的标题栏中有一个登录弹出窗口,它位于我网站的每个页面上.我希望能够在成功登录后重新加载此人所在的当前页面.我如何在控制器中执行此操作?
def create
#declaring and defining user variable stuff
if user.save
#reload current page <--how do I do this?
end
end
Run Code Online (Sandbox Code Playgroud)
谢谢
dat*_*ost 49
对于我的应用程序,我使用redirect_to :back它,它可以解决问题.但是,我怀疑这可能在非一般用例中有错误(用户来自特殊页面?)但我到目前为止还没有在我的应用程序中找到它.
Arc*_*nic 41
如果您正在寻找一种方法来redirect_to :back使用XHR请求刷新页面(通常),您不必寻找更改响应类型的方法 - 只需告诉页面使用内联JS重新加载.
format.js {render inline: "location.reload();" }
就像Elena提到的那样,这应该放在respond_to块中,如下所示:
respond_to do |format|
format.js {render inline: "location.reload();" }
end
Run Code Online (Sandbox Code Playgroud)
bis*_*hal 15
在Rails 5 redirect_to :back 中改进了:
redirect_back(fallback_location: root_path)
Run Code Online (Sandbox Code Playgroud)
小智 12
Archonic的上述答案对我有用.但是,在Rails 3中,我不得不将其放在一个respond_to块中以避免出现"ArgumentError(参数太少)"错误:
respond_to do |format|
format.js {render inline: "location.reload();" }
end
Run Code Online (Sandbox Code Playgroud)
从Rails 5(或者可能是旧版本)开始,你就有了一个request.referrer方法.您只需从控制器重定向到引用者,它将打开请求来自的页面.
redirect_to request.referrer, notice: "You're being redirected"
Rails 5 引入了替代功能:
redirect_back(fallback_location: root_path)
Run Code Online (Sandbox Code Playgroud)
只要 HTTP_REFERER 已知,它就会重定向回来。否则它会重定向到 fallback_location。
的redirect_to :back是在5.0的Rails弃用https://github.com/rails/rails/pull/22506和去除,因为导轨5.1
| 归档时间: |
|
| 查看次数: |
69799 次 |
| 最近记录: |