web-dev-qa-db-ja.com

jsonで何もレンダリングしない方法は?

私は次の方法をテストしています:

  def destroy
    if @article.destroy
      render json nothing: true, message: "removed", status: :ok
    else
      render json: @article, message: "Failed to remove", status: :bad_request
    end
  end

render json nothing行はエラーを生成します

#Api :: V1 :: ArticlesController:0x000000074f6148の未定義のメソッド `json '

行をrender json: message: "removed", status: :okに変更しても違いはありません。何もレンダリングしない方法は?

pdate:以下のコードを試してみましたが、削除するとNo response receivedで応答しますが、メッセージは期待できます。

  def destroy
    if @article.destroy
      respond_to do |format|
        format.json { render nothing: true, message: "removed", status: :ok }
      end
    else
      render json: @article, message: "Failed to remove", status: :bad_request
    end
  end
13
Marty

本当に何もレンダリングしたくない場合:

head :ok # or any another status, e.g. :created, :accepted, etc

パラメータとして、ステータスコードまたはシンボリックステータス( statuses またはコンソールRack::Utils::SYMBOL_TO_STATUS_CODE

応答としてJSONメッセージを送信する場合:

render json: { message: "removed" }, status: :ok
19
Oleg Sobchuk

返すHTTP 204コンテンツなし何も返したくない場合は、より意味があります。

render :nothing => true, :status => 204

またはちょうど良い:

head :no_content
5
mjuopperi