Automatically deserialize administrate fields on form submit.
Add this line to your application's Gemfile:
gem 'administrate-serialized_fields'And then execute:
$ bundle
Or install it yourself as:
$ gem install administrate-serialized_fields
In order to use this, include 'Administrate::SerializedFields' in your base admin ApplicationController.
require 'administrate/serialized_fields'
class ApplicationController < Administrate::ApplicationController
include Administrate::SerializedFields
end
class NotificationController < ApplicationController
deserialize_json_fields :options, :messages, :settings
endThe deserialize_json_fields by default looks for Oj and falls back to JSON. Use load: or deserialize_fields to
apply custom behaviour or a different deserializer.
You must ensure there is a method read_param that takes 2 arguments (key and value), as opposed to the 0.11.0
administrate one param (value). Alternatively, use the administrate-base_controller gem
and get this addition for free.
class Application < Administrate::ApplicationController
protected
def resource_params
permitted = params.require(resource_class.model_name.param_key)
.permit(dashboard.permitted_attributes)
.to_h
permitted.each_with_object(permitted) do |(k, v), result|
result[k] = read_param(k, v)
end
end
def read_param(_, data)
if data.is_a?(ActionController::Parameters) && data[:type]
return read_param_value(data)
end
data
end
endAdministrate: A Rails engine that helps you put together a super-flexible admin dashboard.Administrate::BaseController: 🌠 A set of application controller improvements.
Administrate::DefaultOrder: 🔢 Sets the default order for a resource in a administrate controller.
Administrate::Field::Code: 📝 Atextfield that shows code.Administrate::Field::Hyperlink: 📝 Astringfield that is shows a hyperlink.Adminisrtate::Field::JsonEditor: 📝 Atextfield that shows a JSON editor.Administrate::Field::LazyBelongsTo: 📝 Abelongs to-like field that lazily loads candidates from a custom endpoint.Administrate::Field::ScopedBelongsTo: 📝 Abelongs_tofield that yields itself to the scopelambda.Administrate::Field::ScopedHasMany: 📝 Ahas_manyfield that yields itself to the scopelambda.Administrate::Field::TimeAgo: 📝 Adate_timefield that shows its data astime_agosince.
After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can
also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the
version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version,
push git commits and tags, and push the .gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at XPBytes/administrate-serialized_fields.