2014-01-12 54 views
0

我有以下網址與獲取屬性發送請求到控制器:更新未與ID屬性的工作軌道4

http://localhost:3000/videos/new/save_video?video_id=16&status=200&id=PhTHHldZJJQ 

Constoller:

def save_video 
    @video = Video.find(params[:video_id]) 
    if params[:status].to_i == 200 
     @video.update(:yt_youtube_id => params[:id].to_s, :is_complete => true) 
     Video.delete_incomplete_videos 
    else 
     Video.delete_video(@video) 
    end 
    redirect_to videos_path, :notice => "video successfully uploaded" 
    end 

但是我莫名其妙地收到此錯誤:

ActiveRecord::RecordNotFound at /videos/new/save_video 
Couldn't find Video with id=PhTHHldZJJQ 

有沒有理由不從:video_id找到?

我找不出這個......

回答

0

ActiveRecord ID是整數。您已將字符串傳遞給find,該字符串不會轉換爲整數,因此將始終失敗。

+0

感謝您的回答,但它保存在':yt_youtube_id'而不是varchar 255列中。有關係嗎?有趣的是,當我從網址'ID ='出來它的工作原理 –

+0

我不確定你的意思是「保存到:yt_youtube_id」。您是否重新定義了ActiveRecord的主鍵?無論如何,至少如果你沒有重新定義主鍵,當你沒有提供'find'的命名參數時,它將搜索'id'列的值並期待一個整數。 –

0

它似乎試圖使用:id搜索視頻而不是:video_id。它可能是另一個寶石(如CanCan),它可能會嘗試在動作開始前將視頻加載到過濾器中。或者它可能是控制器中的其他東西,你可以發佈控制器的完整代碼嗎?

如果您只是想讓它起作用,請使用:id作爲發送視頻ID的變量,而不是:video_id