gpt4 book ai didi

ruby-on-rails - Controller 根据上一页重定向到不同的路径

转载 作者:行者123 更新时间:2023-12-04 06:30:13 25 4
gpt4 key购买 nike

问题:

如果 previous_page 是 ../reader/new 转到 ../reader/blog,我想如何在 create 操作后重定向到不同的路径/:id,而如果 previous_page 是 ../editor/new 则转到 ../editor/blog/:id

解释:

我想修改 Controller 操作,以便它可以根据它来自哪个页面重定向到不同的路径。例如,我有一个 readereditorblog 模型。 readereditor 都可以创建blog

这是原始的blogs_controller:

    class BlogsController < ApplicationsController        
def create
@blog = Blog.new(blog_params)
respond_to do |format|
if @blog.save
format.html { redirect_to @blog }
else
format.html { render :new }
end
end
end

private

def blog_params
params.require(:service).permit(:title, :content)
end
end

最佳答案

您有几个选择:

  • 如果您只需要重定向返回上一页,则在 Controller 中使用redirect_to :back
  • 添加一些处理HTTP referer的逻辑,即根据 Controller 中的request.referer决定重定向到哪里
  • 在参数中传递重定向信息create 操作,例如当来自“阅读器”页面时传递 params[:redirect_to] = "reader" 并根据此参数决定重定向到哪里。您甚至可以将要重定向的整个 URI 放入参数中,然后直接重定向到它(但这种方法不安全,因为参数可能会被用户破坏)。

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

关于ruby-on-rails - Controller 根据上一页重定向到不同的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com