0

Rails 3でrespond_toとrespond_withのペアを使用して、DELETE#destroyリクエストに応答しています。破棄アクションはUsersControllerで定義されています。で指定されたユーザーを破棄params[:id]し、JSテンプレートで応答します。ただし、リクエストはRSpecテストで失敗し続け、修正方法がよくわかりません。

これが私のUsersControllerのスニペットです:

class UsersController < ApplicationController
  respond_to :html, only: [:index, :show, :new, :edit]
  respond_to :js, only: [:create, :update, :delete]
  ...

  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_with @user
  end
end

そして、これが失敗し続けるテストです:

require 'spec_helper'

describe UsersController do
  ...

  describe "DELETE #destroy" do
    before { @user = create(:user); delete :destroy, id: @user.id, format: :js }

    it "return HTTP success" do
      response.should be_success
    end

    it "respond with JS content" do
      response.content_type.should == 'text/javascript'
    end
  end
end

「JSコンテンツで応答する」テストは成功しますが、「HTTP成功を返す」テストは失敗します。デバッガーを使用してチェックするresponse.codeと、406です。削除が成功したので2xxを期待しています。これは通常のRailsの動作ですか、それともコードに問題がありますか?

4

1 に答える 1

1

RESTdeleteとコントローラーを台無しにしたようですdestroy。Railsレスポンダーは:deleteアクション、変更について何も知りません

respond_to :js, only: [:create, :update, :delete]

respond_to :js, only: [:create, :update, :destroy]

または、代わりにブロックをレスポンダーに渡します

respond_with @user

使用する

respond_with @user do |format|
 format.js
end
于 2012-08-06T07:40:35.107 に答える