控制器根据前一页重定向到不同的路径

时间:2016-03-09 16:33:41

标签: ruby-on-rails ruby-on-rails-4 controller

问题:

我希望在create操作后重定向到不同路径,如果previous_page为../reader/new,则为../reader/blog/:id,而如果previous_page为../editor/new则为{{1} }}

阐释:

我想修改控制器操作,以便它可以重定向到不同的路径,具体取决于它来自哪个页面。例如,我有../editor/blog/:idreadereditor模型。 blogreader都可以创建editor

以下是原始blog

blogs_controller

1 个答案:

答案 0 :(得分:5)

您有几个选择:

  • 如果您需要将重定向到上一页
  • ,请在控制器中使用redirect_to :back
  • 添加一些逻辑处理 HTTP referer ,即根据控制器中的request.referer决定重定向的位置
  • 将参数中的重定向信息传递给create操作,例如来自"读者"时传递params[:redirect_to] = "reader"页面并根据此参数决定重定向的位置。您甚至可以将整个URI重定向到param中,然后重定向到它(但这种方法不安全,因为用户可能会破坏params)。

通常,我选择第三个选项(参数),因为您可以最好地控制重定向过程(前两个选项依赖于HTTP引用,也可能被任何访问者破坏,因此可能不安全)