gpt4 book ai didi

ruby-on-rails - 为什么rails在创建后会重定向到show action?

转载 作者:行者123 更新时间:2023-12-03 16:06:15 25 4
gpt4 key购买 nike

这里是新的 Web 开发人员,我想我可能缺少一些非常基础的知识。
给定代码

def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render "new"
end
end

为什么 View 模板重定向到 默认显示 行动?如果我没有定义 默认显示 及其相应的 View ,rails 会给我一个错误。

我只是不明白为什么即使代码是 重定向到@post 保存帖子后,它似乎在创建帖子后重定向到显示页面。这只是我应该照原样接受的那些东西之一,还是我错过了一些基本的 HTML 协议(protocol)知识(老实说我不太了解)?

编辑:为了进一步澄清我的问题,我看到 @post 已在 中定义创建 方法,定义为 Post.new(post_params)。 当我 重定向到@post ,它不会简单地再次调用那条线吗?

最佳答案

让我们看看你的代码

def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render "new"
end
end

why does the view templates redirect to the def show action? If I do not define a def show and its corresponding views, rails will throw me an error.



create您正在创建一条新记录的操作,因此如果您查看这部分代码
if @post.save
redirect_to @post

@post已成功保存,我们通过写入 redirect_to @post 将其重定向以显示操作,实际路线为 show行动将是 post_path(@post)所以你也可以写 redirect_to post_path(@post)但即使你只是用 redirect_to 传递对象rails 会将其重定向到 show Action 。现在转到 else部分
else
render "new"

如果 @post对象没有保存在数据库中(由于验证),我们要重新加载表单,所以在上面的代码中 render只是渲染 new 的 View 行动而不是调用 new操作,只渲染 View ,因为 new.html.erb包含表单。

希望这有帮助!

关于ruby-on-rails - 为什么rails在创建后会重定向到show action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28981283/

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