【问题标题】:Rails redirect to index page after delete删除后 Rails 重定向到索引页面
【发布时间】:2018-08-15 18:32:02
【问题描述】:

我需要在对象的显示页面上放置删除链接。此显示页面将在两个不同的控制器上呈现。我需要在其中重定向到请求来自的索引页面。该网址将是
localhost:3000/users(索引页面),它将链接到书籍(显示页面),该 URL 将是本地主机:3000/books/I'd。而在另一个控制器索引页面本地主机:3000/books 也有链接到书籍显示页面,其中有删除链接。我需要重定向到请求来自的索引页面。任何帮助

编辑: 如何在 Ruby On Rails 中重定向到上一页? (问题已经存在) 我们可以在编辑操作中获取请求 URL。但是这里的删除操作将在普通显示页面上

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

如果我正确理解了您的问题,您可以将以下内容放入您的 delete 控制器中:

redirect_to :back

应该重定向回用户来自的页面。

【讨论】:

  • redirect_to :back 在 Rails 5.1 中已被贬值,因为如果不存在 Referer 标头会引发错误。
  • 我不会使用 redirect_to : back,因为请求会在显示页面上触发
  • @Aarthi 我想我误解了这个问题,我的印象是“删除”链接在索引页面上。
【解决方案2】:

您可以通过将其存储在会话中来跟踪对索引页面的访问:

class ApplicationController
  private 
  def store_location
    session[:stored_location] = request.path
  end

  def stored_location
    session[:stored_location]
  end
end

class UsersController
  before_acton :store_location, only: [:index]
  # ...
end

class BooksController
  before_acton :store_location, only: [:index]
  # ...
end

您可以将其用于您的销毁操作:

class BooksController
  def destroy
    @book.destroy
    redirect_to stored_location || books_path
  end
end

【讨论】:

  • 请求 URL 将具有图书 ID。因为删除请求会在显示页面上触发。如果我重定向到请求路径,它将不存在,因为它已被删除。如果我错了,请纠正我
  • 这会将最终用户重定向到上一个页面,即刚刚删除记录的显示页面:(
  • @MrYoshiji 是的,我想我应该添加一个条件来检查请求是否来自显示操作操作。已编辑。
  • 我想你误解了我的问题。有两种不同的索引动作,它们都有共同的显示页面链接。显示页面上有一个删除选项。需要重定向到触发显示操作调用的索引页面
  • 基本方法相同,只是将位置保存在要“跟踪”的索引操作上。
【解决方案3】:

红宝石 2.5.1p57 |导轨 5.2.0

放在方法的末尾:

redirect_to action: :index

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多