2013-02-01 76 views
0

在Rails應用程序中,我有在每個用戶顯示視圖中可以在其下創建筆記的用戶。Rails控制器:更新操作無法執行SQL UPDATE?

從show view中可以添加和編輯註釋。編輯鏈接正確地路由到每個音符的編輯路徑。點擊保存更新備註將重定向回用戶顯示視圖。

這裏是我的筆記控制器:

def update 
    @note = Note.find(params[:id]) 

    redirect_to user_path(@note.user) 
    end 

不過,我試圖更新一個音符輸入並在控制檯中我看到它沒有更新的某些原因。 BEGIN和COMMIT之間應該有UPDATE步驟,但它似乎在這裏丟失。

Started PUT "/notes/2" for 127.0.0.1 at 2013-02-01 01:50:25 -0800 
Processing by NotesController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"Wr+urG+6QvsbPuFpVGUEEqc8QVYiu5q8j389YmOi6Zg=", "note"=>{"author"=>"MZ", "note"=>"Test"}, "id"=>"2"} 
    Note Load (0.2ms) SELECT "notes".* FROM "notes" WHERE "notes"."id" = $1 LIMIT 1 [["id", "2"]] 
    (0.2ms) BEGIN 
    (0.1ms) COMMIT 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
Redirected to http://localhost:3000/users/1 
Completed 302 Found in 37ms (ActiveRecord: 3.8ms) 

爲什麼沒有UPDATE步驟的原因是什麼?

+0

我沒有找到關於這一問題的它的自我任何UDPATE活動記錄是'@ note.update_attributes(PARAMS [:注])' –

回答

2

您沒有更新屬性。您必須致電update_attributes並通過params進行更新。

def update 
    @note = Note.find(params[:id])    #find the note 
    if @note.update_attributes(params[:note]) #update the note 
    redirect_to @note.user     #if attributes updated redirect to @note.user 
    else 
    render :edit        #if not, render the form 
    end 
end 
+1

我想你的意思是「注意」,而不是「節點」 - 但這工作。 – mztwo

+0

是...對不起,拼寫錯誤 – gabrielhilal

0

試試這個,您缺少update_attributes。這是調用更新方法的正確方法。如果更新成功,您將收到一條Flash消息。

def update 
    @note = Note.find(params[:id]) 

    respond_to do |format| 
     if @note.update_attributes(params[:note]) # you need to make sure about the :note 
     format.html { redirect_to user_path(@note.user), notice: 'Notes was successfully updated.' } 
     else 
     format.html { render actino: "edit" } 
     end 
    end 
end 
相關問題