2012-11-27 84 views
0

我終於來問這個問題,因爲我沒有找到答案,並一直困擾着我。這種行爲背後的原因是什麼?它是否是REST-thingy驅動的:)?爲什麼驗證失敗後,URL會丟失'/ edit'後綴?

我發現這個 「解決辦法」,但沒有解釋:How to make a render :edit call show the /edit in the address bar

感謝


編輯

我的問題不是那麼好寫的,不好意思。 爲什麼默認的Rails行爲不是重定向到編輯模板?這會感覺更合乎邏輯,對我來說至少:)

回答

2

render不重定向,所以沒有任何理由的URL欄地址會改變。

默認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 

的URL是/posts/1,這是在地址欄顯示。如果update_attributes fails, e.g., a validation error,則呈現"edit"模板,不帶重定向。

+0

謝謝。我編輯了我的問題。 – ddidier

+0

@c_inconnu由於在Flash中保存模型可能很昂貴,尤其是因爲默認閃存限制爲最大cookie大小,並且序列化模型可能非常大。另外,國際海事組織沒有理由更改網址。 –