Reputation: 1375
This code is written for ActiveAdmin, but actually it does not matter. How I can optimize it? Thank you.
module ActiveAdminSimpleMenu
# in options can take:
# menu_priority:integer
# menu_parent:string
# permitted_params:array for some additions to main_fields permitted params
def simple_menu_for(klass, options = {})
ActiveAdmin.register klass do
menu_options = {}
menu_options[:priority] = options[:menu_priority] if options[:menu_priority]
menu_options[:parent] = options[:menu_parent] if options[:menu_parent]
menu menu_options unless menu_options.empty?
permit_params(*(klass.main_fields + (options[:permitted_params] ? options[:permitted_params] : [])))
...
Upvotes: 0
Views: 41
Reputation: 37657
I presume by "optimize" you mean refactor. You can
Hash#slice
(a Rails method) to build menu_options
if
and any?
||
to test options[:permitted_params]
All together:
def simple_menu_for(klass, options = {})
ActiveAdmin.register klass do
menu_options = options.slice(:menu_priority, :menu_parent)
menu menu_options if menu_options.any?
permit_params(*(klass.main_fields + (options[:permitted_params] || [])))
...
Upvotes: 2