Ruby on rails 渲染';新';如果保存失败,则无法正常工作

Ruby on rails 渲染';新';如果保存失败,则无法正常工作,ruby-on-rails,Ruby On Rails,我是rails新手,正在通过构建一个简单的博客类型的应用程序进行练习。如果@post.save因某个字段留空而失败,我已将PostsController设置为呈现“posts/new”页面 def create @post = Post.new(post_params) if @post.save redirect_to @post else render 'new' end end 这符合第5.10条的规定。作为一个用户,当我单击“提交”以便保存文章时,留下

我是rails新手,正在通过构建一个简单的博客类型的应用程序进行练习。如果@post.save因某个字段留空而失败,我已将PostsController设置为呈现“posts/new”页面

def create
  @post = Post.new(post_params)

  if @post.save
    redirect_to @post
  else
    render 'new'
  end
end

这符合第5.10条的规定。作为一个用户,当我单击“提交”以便保存文章时,留下一个空白字段,“新建”的html被加载,但我发送到的URL是“/posts”,而不是“posts/new”。有没有可能我的路线被弄糟了?

你看到的是正确的行为。当您发出post请求时,URL应更改为您要发布到的任何URL


如果希望url成为新的url,那么应该在控制器中执行重定向而不是呈现。但是,当您执行重定向时,您将丢失所有与验证相关的信息。

我认为您对渲染和重定向的工作方式感到困惑渲染不会像重定向一样向服务器发送新请求


提交表单时,您向服务器发送一个post请求/posts,因此url更改为/posts,但在创建方法中存在验证错误,因此您的操作呈现新操作,但呈现不会向服务器发送新请求,因此您的url保持不变。签出方式否正确的行为。您将通过进入创建操作的
POST
请求被发送到
/posts
。感谢您的解释@PhilMok很高兴我能帮忙:)这是否意味着所有的字段都将被清除?你能告诉我一个地方,在那里我可以学会如何防止田地被清理吗?谢谢