lib/active_admin/helpers/optional_display.rb in activeadmin-0.4.0 vs lib/active_admin/helpers/optional_display.rb in activeadmin-0.4.1

- old
+ new

@@ -12,12 +12,22 @@ # # call #normalize_display_options! after @options has been set # to ensure that the display options are setup correctly module OptionalDisplay - def display_on?(action) - return @options[:only].include?(action.to_sym) if @options[:only] - return !@options[:except].include?(action.to_sym) if @options[:except] + def display_on?(action, render_context = nil) + return false if @options[:only] && !@options[:only].include?(action.to_sym) + return false if @options[:except] && @options[:except].include?(action.to_sym) + if @options[:if] + symbol_or_proc = @options[:if] + return case symbol_or_proc + when Symbol, String + self.send(symbol_or_proc) + when Proc + render_context ? render_context.instance_exec(&symbol_or_proc) : instance_exec(&symbol_or_proc) + else symbol_or_proc + end + end true end private