【问题标题】:Rails redirect to previous page (back) after delete删除后 Rails 重定向到上一页(返回)
【发布时间】:2013-05-01 17:57:45
【问题描述】:

有没有办法在 link_to 中包含重定向?我想在删除后刷新当前页面。但是,您可以从应用的多个视图中删除相同的记录。

这是link_to:

<%= link_to 'Delete', expense, confirm: 'Are you sure?', method: :delete, :class => 'btn btn-mini btn-danger' %>

如果没有,将 current_url 保存在 flash[:fromurl] 中是否有意义,然后将其放入 Controller destroy 部分,如下所示:

   respond_to do |format|
     format.html { redirect_to flash[:fromurl] }
     format.json { head :no_content }
   end

感谢您的帮助!

【问题讨论】:

  • 您是否考虑过将链接设为远程,以便您可以使用 js 处理特定 div 的刷新,这样您就不必重新加载整个页面?
  • 可能是redirect_to :back?
  • 听起来不错——但是,我不知道要开始做。有什么地方可以指点我解释一下吗?
  • @Reddirt 看看这个:stackoverflow.com/questions/7052650/…
  • MrYoshi - 工作起来比使用 flash 简单得多 - 谢谢!!!

标签: ruby-on-rails


【解决方案1】:

您可以使用redirect_to :back

respond_to do |format|
  format.html { redirect_to :back }
  format.json { head :no_content }
end

它使用请求中的标头“HTTP_REFERER”:

redirect_to :back
# is a shorthand for:
redirect_to request.env["HTTP_REFERER"]

【讨论】:

  • Yoshiji 先生,我想知道您是否愿意帮我看看这个问题?我真的很感激。 stackoverflow.com/questions/16279090/…
  • MrYoshiji - 如果您从除显示页面之外的任何页面中删除,redirect_to :back 将起作用。因为,后面试图带你回去显示你刚刚删除的记录。我发布了一个新问题。
  • @Reddirt 你们都知道如何不让:back 尝试将您发送到刚刚删除的记录吗?
  • @Gcap 你不应该在成功销毁操作后redirect_to :back,而是执行redirect_to action: :index(例如)
【解决方案2】:

在 Rails 5 (Official Docs) 中,您可以使用更新的: redirect_back(fallback_location: root_path)

使用它会将用户重定向到引用页面(上一页,与redirect_to :back 相同)。如果这不可能,它会重定向到控制器中指定的后备位置。

控制器中的方法示例(这会将用户重定向到 根路径 作为后备位置):

def some_method
    #Your Code Here
    redirect_back(fallback_location: root_path)
end

删除expense 并重定向回的方法示例,并回退到root_path

def destroy
    @expense.destroy
    redirect_back(fallback_location: root_path)
end

下面是fallback_location 的一些其他示例,如果引用页面无法重定向到,可用于将浏览器重定向回特定页面:

redirect_back fallback_location: "http://www.google.com"      #Redirects to Google (or any website you specify)
redirect_back fallback_location:  "/images/screenshot.jpg"    #Redirects to a local image
redirect_back fallback_location:  posts_path                  #Redirects to the 'posts' path
redirect_back fallback_location:  new_user_path               #Redirects to the new user path 

【讨论】:

    【解决方案3】:

    你也可以试试这个。

    render :nothing => true
    

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多