验证失败后,为什么URL会丢失'/ edit'后缀?

时间:2012-11-27 21:41:47

标签: ruby-on-rails ruby-on-rails-3.2

我终于来问这个问题,因为我找不到答案而且一直困扰着我。这种行为背后的原因是什么?它是REST-thingy驱动的:)?

我发现这是“解决方法”,但没有解释:How to make a render :edit call show the /edit in the address bar

由于

<小时/> 的修改

我的问题不是写得好,抱歉。 为什么默认的Rails行为不会重定向到编辑模板?至少对我来说这会更符合逻辑:)

1 个答案:

答案 0 :(得分:2)

render不会重定向,因此网址栏地址无法更改。

默认的update方法如下所示:

  # PUT /posts/1
  # PUT /posts/1.json
  def update
    @post = Post.find(params[:id])

    respond_to do |format|
      if @post.update_attributes(params[:post])
        format.html { redirect_to @post, notice: 'Post was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

网址为/posts/1,显示在网址栏中。如果update_attributes fails, e.g., a validation error,它会呈现"edit"模板,而不会重定向。