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