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
end
The 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
end
Administrate
: 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
: 📝 Atext
field that shows code.Administrate::Field::Hyperlink
: 📝 Astring
field that is shows a hyperlink.Adminisrtate::Field::JsonEditor
: 📝 Atext
field that shows a JSON editor.Administrate::Field::LazyBelongsTo
: 📝 Abelongs to
-like field that lazily loads candidates from a custom endpoint.Administrate::Field::ScopedBelongsTo
: 📝 Abelongs_to
field that yields itself to the scopelambda
.Administrate::Field::ScopedHasMany
: 📝 Ahas_many
field that yields itself to the scopelambda
.Administrate::Field::TimeAgo
: 📝 Adate_time
field that shows its data astime_ago
since.
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.