2013-11-02 61 views
0

只是爲了闡明:我是Ruby和Rails的新手。試圖通過測試時得到「預期響應爲<:redirect>,但是爲<200>」

我tryed解決我的問題,在hereherehere的sugestions,但他們似乎並未有直接的關係與我的問題,還是我太愚蠢不明白。

我想測試一個場景,我不更新對象,我希望我的應用程序重定向。我不確定我的控制器代碼是否正確,我想我可能沒有涉及這種情況。這裏是我的測試代碼:

test "should not update status if nothing has changed" do 
    sign_in users(:rodrigo) 
    put :update, id: @status 
    assert_redirected_to status_path(assigns(:status)) 
    assert_equal assigns(:status).user_id, users(:rodrigo).id 
    end 

,和我的控制器更新代碼:

def update 
    @status = current_user.statuses.find(params[:id]) 
    @document = @status.document 
    if params[:status] && params[:status].has_key?(:user_id) 
     params[:status].delete(:user_id) 
    end 
    respond_to do |format| 
     if @status.update_attributes(params[:status]) && 
     @document && @document.update_attributes(params[:status][:document_attributes]) 
     format.html { redirect_to @status, notice: 'Status was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @status.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

我已經試圖驗證是否@status.changed?,它真的沒有。我在這裏沒有選擇。如果有人想幫助並需要更多信息,我可以提供。

回答

0

捂臉我...

我在我的問題中提到:

我已經試圖驗證是否@status.changed?,它真的沒有。

它的確發生了變化,當我把不同的東西在模型的屬性之一,但是我救了我的@status模型後,我只問.changed?。我真的很抱歉,我只是想知道Ruby on Rais是如何工作的。

這就是說,我想出了一個解決方案來解決我的問題,那就是設置我的模型的唯一一個屬性(當然除外id)和params[:status]散列的值。和之前保存,請問@status.changed?。如果沒有,我redirect_to不變的@status,否則,我只是保存它,並通過舊的代碼。

當然,這並不包括我所有的情況,因爲我也必須檢查我的@document模型是否已經改變,但這不是這個問題的範圍。

相關問題