我得到一個雙重渲染錯誤,我無法擺脫我的模型的更新方法。無法擺脫AbstractController :: DoubleRenderError
下面是控制器
class Admin::CmsHappeningNowFeatureController < ApplicationController
def index
# Various model data retrieval...
render 'admin/cms/hn_features/index', layout: 'admin_cms'
end
# Works fine
def edit
@feature = CmsHappeningNowFeature.find_by_id(params[:id])
render 'admin/cms/hn_features/feature', layout: 'admin_cms'
end
# Throws a AbstractController::DoubleRenderError upon submission
def update
@feature = CmsHappeningNowFeature.find_by_id(params[:id])
@feature.attributes = params[:cms_happening_now_feature]
if @feature.save
redirect_to(:action => index, :notice => "Successfully updated feature.") and return
end
render 'admin/cms/hn_features/feature', layout: 'admin_cms'
end
# ... rest of the class
end
當重定向到另一個控制器的代碼,這個問題就會消失。似乎重定向到相同的控制器使得rails無需實際發送重定向就可以執行該方法。通過查看日誌,當提交更新表單時,update
被調用,然後index
被調用,render
從索引被執行,然後重定向被髮出並失敗。
我錯過了什麼?什麼是解決方法?
哈!謝謝!我沒有注意到':action => index'實際上正在調用'index'並將結果返回給':action' – Damp