验证失败后,在url中维护`new`

时间:2014-04-29 09:40:56

标签: ruby-on-rails ruby-on-rails-3 forms validation redirect

来自默认的脚手架生成器我的博客控制器中有以下create操作:

  # POST /blogs
  # POST /blogs.json
  def create
    @blog = Blog.new(params[:blog])

    respond_to do |format|
      if @blog.save
        format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
        format.json { render json: @blog, status: :created, location: @blog }
      else
        format.html { render action: "new" }
        format.json { render json: @blog.errors, status: :unprocessable_entity }
      end
    end
  end

当发送的表单包含错误时,我的浏览器会重定向到/blogs网址,但在页面中会呈现new操作。

在我看来这真的很难看(以及简化我的javascript)我希望浏览器保持在同一个blogs/new网址中。

我尝试更改redirect_to :new而不是render action: "new",但这当然会丢失@blog数据。

关于如何做到这一点的任何线索?

谢谢,

1 个答案:

答案 0 :(得分:0)

如果你想在路径中保留新的东西,你可以使用params重新定向:

redirect_to new_blog_path(blog: params[:blog])

然后在博客#new

中检查这些参数