私のモデルの更新メソッドで取り除くことができない、ダブルレンダリングエラーが発生しました。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
別のコントローラにリダイレクトするためのコードですが、問題が消えます。同じコントローラにリダイレクトすると、実際にリダイレクトを送信せずにメソッドが実行されるようです。ログを見ると、更新フォームを送信すると
update
が呼び出され、
index
が呼び出され、
render
がインデックスから実行され、
がにリダイレクトされ、失敗します。
私には何が欠けていますか?回避策は何ですか?
ハ!ありがとう!私は ':action => index'が実際に' index'を呼び出して ':action'に結果を返すという事実を捕まえていませんでした – Damp