0

respond_to通常のケースと aparam[:top]が渡される特別なケースのための別のケースがあるためrespond_to、コードの前の方に別のケースがあります。

      respond_to do |format|
        format.html { render :top_page_analytics }
        format.json { render :json => @analytics }
        format.xml { render :xml => @analytics }
        return
      end

しかし、上記のコードは実際にはjsonのテンプレートが見つからないという奇妙なエラーを出し、さらにデバッグすると次のようになりました。

      respond_to do |format|
        format.html { render :top_page_analytics }
        format.json { render :json => @analytics }
        format.xml { render :xml => @analytics }
      end
      return

バグを修正します。プログラムが他のrespond_to. respond_toしかし、case ステートメントのように見えるの奇妙な構文が、上部にあるようなエラーを引き起こす可能性があるのだろうか?

4

1 に答える 1

1

ブロックを通過しているため、リターンはそこに行くことができません。ブロックは、コントローラー アクションの直接のコンテキストでは実行されません。ブロックから戻るとき、実際には、コントローラーのアクションではなく、yield 関数 (respond_to) から戻っています。

于 2010-09-16T21:03:59.223 に答える