略過內容 略過搜尋
方法
#
I
W

執行個體公開方法

_set_wrapper_options(options)

# File actionpack/lib/action_controller/metal/params_wrapper.rb, line 189
def _set_wrapper_options(options)
  self._wrapper_options = Options.from_hash(options)
end

inherited(klass)

設定預設包覆器金鑰或模型,此將會用來決定包覆器金鑰和屬性名稱。在繼承模組時會自動呼叫。

# File actionpack/lib/action_controller/metal/params_wrapper.rb, line 244
def inherited(klass)
  if klass._wrapper_options.format.any?
    params = klass._wrapper_options.dup
    params.klass = klass
    klass._wrapper_options = params
  end
  super
end

wrap_parameters(name_or_model_or_options, options = {})

設定包覆器金鑰的名稱,或由 ParamsWrapper 所使用的模型,來從其中決定屬性名稱。

範例

wrap_parameters format: :xml
  # enables the parameter wrapper for XML format

wrap_parameters :person
  # wraps parameters into +params[:person]+ hash

wrap_parameters Person
  # wraps parameters by determining the wrapper key from Person class
  # (+person+, in this case) and the list of attribute names

wrap_parameters include: [:username, :title]
  # wraps only +:username+ and +:title+ attributes from parameters.

wrap_parameters false
  # disables parameters wrapping for this controller altogether.

選項

  • :format - 會啟用參數包覆器的格式清單。

  • :include - 參數包覆器將會包覆成巢狀雜湊的屬性名稱清單。

  • :exclude - 參數包覆器將會從巢狀雜湊中排除的屬性名稱清單。

# File actionpack/lib/action_controller/metal/params_wrapper.rb, line 221
def wrap_parameters(name_or_model_or_options, options = {})
  model = nil

  case name_or_model_or_options
  when Hash
    options = name_or_model_or_options
  when false
    options = options.merge(format: [])
  when Symbol, String
    options = options.merge(name: name_or_model_or_options)
  else
    model = name_or_model_or_options
  end

  opts = Options.from_hash _wrapper_options.to_h.slice(:format).merge(options)
  opts.model = model
  opts.klass = self

  self._wrapper_options = opts
end