通過:show
和:edit
等操作,我可以通過http獲取它們。但由於:update
操作沒有模板,因此如果不抱怨模板丟失,則無法發出GET。這是有道理的,所以我試圖直接調用@controller.update
在我的測試,但我得到了respond_to
塊上的錯誤:如何爲控制器中的更新操作編寫功能測試?
NoMethodError: undefined method `parameters' for nil:NilClass
如何指定請求的格式是:html
?我傳遞了模型屬性FWIW的參數哈希值。感謝您的任何建議。
編輯: 我因爲試圖調用@ controller.update在控制檯和錯誤上面引述從這裏向上冒泡(設置PARAMS []之後):/actionpack-2.3.8/lib/action_controller/mime_responds.rb
我也嘗試PUT而不是GET,但仍然得到「缺少模板update.erb」。
而且,我設法找出失蹤模板的這個錯誤是由具有其它任何比重定向或標記這裏的代碼塊渲染:
respond_to do |format|
if @model.update_attributes(params[:model])
flash[:notice] = 'note!'
format.html { **HERE** }
...
我有一個方法調用有沒有被只是一個條件重定向到適當的地方。原則上,我可以理解爲什麼它可能會尋找一個模板來渲染,因爲它可能不知道下游有更多的重定向,但我不明白的是我的web應用程序沒有運行到相同的錯誤作爲我的功能測試。
感謝您的想法。我嘗試了PUT,但得到了「缺少模板update.erb」。我編輯了原文,以澄清我使用的是參數,而不是「參數」。我還發現了一個更具體的問題原因,但仍然不瞭解其根源。 – user258980 2010-07-30 06:19:23