web-dev-qa-db-ja.com

「:nothing」オプションは廃止され、Rails 5.1で削除されます

Rails 5のこのコード

class PagesController < ApplicationController
  def action
    render nothing: true
  end
end

次の非推奨警告が発生します

DEPRECATION WARNING: :nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.

どうすれば修正できますか?

98
Oleander

Rails source によると、これはRailsでnothing: trueを渡すときに内部で行われます5。

if options.delete(:nothing)
  ActiveSupport::Deprecation.warn("`:nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.")
  options[:body] = nil
end

したがって、nothing: truebody: nilに置き換えるだけで問題を解決できます。

class PagesController < ApplicationController
  def action
    render body: nil
  end
end

代わりに使用できますhead :ok

class PagesController < ApplicationController
  def action
    head :ok
  end
end
151
Oleander