3

ユーザーコントローラーでこのdestroyメソッドを実行すると、次のエラーが発生します。

AbstractController :: DoubleRenderError(このアクションでは、Renderまたはredirectが複数回呼び出されました。renderまたはredirectを呼び出すことができるのは、アクションごとに最大1回だけであることに注意してください。また、redirectもrenderも、アクションの実行を終了しないことに注意してください。リダイレクト後にアクションを終了する場合は、「redirect_to(...)andreturn」のような操作を行う必要があります。):

私は正直に電話に一度だけ応答しているので、それは奇妙なものです。

これが私の行動です:

def destroy
  user = User.find(params[:id])
  if user.has_role_for? current_client

    # then we remove the role
    user.has_no_roles_for! current_client

    # was that the users only role?
    if user.roles.count == 0
      user.destroy
    end

    respond_with head :ok
  else
    respond_with({:error=>'unauthorised'}, :status => :forbidden)
  end
end

何か案は?

4

2 に答える 2

5

head(:ok)あなたができるものを返しませんrespond_withhead :okボディなしで200をレンダリングします。 respond_withレスポンダーを介して、渡したオブジェクトの表現をレンダリングします。 head呼び出しrenderrespond_with呼び出しrender、したがってダブルレンダリングエラー。

その行をちょうどに変更する必要がありますhead :ok

于 2012-04-21T00:08:57.957 に答える
5

Respond_with 行の後に「and return」を追加してみてください。

respond_with head :ok and return 

respond_with({:error=>'unauthorised'}, :status => :forbidden) and return
于 2011-03-24T09:04:28.217 に答える