0

最近、プレーンからコントローラーを更新しました

render :json => @something

respond_to do |format|
          format.html {
            redirect_to @something
          }
          format.json {
            puts "found json format"
            format.json { render json: @something, status: :created }
          }
        end

しかし、今は ActionView::MissingTemplate エラーが発生しています。私の質問は、respond_to do |format| を使用する場合です。テンプレートを使用する必要がありますか? プレーンな json を返したい場合はどうすればよいですか?

ところで、json Respond_to ブロックの puts ステートメントが正常に呼び出されています。

4

4 に答える 4

1

json レンダリング ブロック内からパーツを削除しformat.jsonます (ブロック内に不要なブロックがあります)。

  respond_to do |format|
      format.html {
        redirect_to @something
      }
      format.json {
        render json: @something, status: :created
      }
    end
于 2013-06-13T20:09:32.797 に答える
1

問題はputsあなたの format.json ブロック内で呼び出されており、独自のブロック内で format.json をネストしていると思います。両方を削除してみてください (以下のように)。

respond_to do |format|
          format.html {
            redirect_to @something
          }
          format.json {
            puts "found json format"
            format.json { render json: @something, status: :created }
          }
        end

試す:

  respond_to do |format|
    format.html { redirect_to @something }
    format.json  { render json: @something, status: :created }
  end
于 2013-06-13T20:06:10.847 に答える
1

HTMLおよびJSON形式を受け入れることを伝えています。リクエストは HTML からのものであるため、HTML テンプレートがレンダリングされます。JSON のみを返したい場合は、コードからその行を削除してください。のドキュメントも確認してくださいrespond_to

ご存知かもしれませんが、Layouts and Renderingに関するガイドがあります。

于 2013-06-13T20:06:30.380 に答える
1

あなたのコードがエラーを引き起こしている理由は、あなたが持っているからだと思います

format.json {
            format.json { render json:  @something , status: :created }
          }

あなたが持っている必要があります:

format.json {
           render json:  @something , status: :created
          }
于 2013-06-13T20:09:43.500 に答える