module ActionView::LookupContext::ViewPaths
Helpers related to template lookup using the lookup context information.
Attributes
html_fallback_for_js[R]
view_paths[R]
Public Instance Methods
any?(name, prefixes = [], partial = false)
click to toggle source
# File lib/action_view/lookup_context.rb, line 133 def any?(name, prefixes = [], partial = false) @view_paths.exists?(*args_for_any(name, prefixes, partial)) end
Also aliased as: any_templates?
exists?(name, prefixes = [], partial = false, keys = [], **options)
click to toggle source
# File lib/action_view/lookup_context.rb, line 128 def exists?(name, prefixes = [], partial = false, keys = [], **options) @view_paths.exists?(*args_for_lookup(name, prefixes, partial, keys, options)) end
Also aliased as: template_exists?
find(name, prefixes = [], partial = false, keys = [], options = {})
click to toggle source
# File lib/action_view/lookup_context.rb, line 115 def find(name, prefixes = [], partial = false, keys = [], options = {}) @view_paths.find(*args_for_lookup(name, prefixes, partial, keys, options)) end
Also aliased as: find_template
find_all(name, prefixes = [], partial = false, keys = [], options = {})
click to toggle source
# File lib/action_view/lookup_context.rb, line 124 def find_all(name, prefixes = [], partial = false, keys = [], options = {}) @view_paths.find_all(*args_for_lookup(name, prefixes, partial, keys, options)) end
find_file(name, prefixes = [], partial = false, keys = [], options = {})
click to toggle source
# File lib/action_view/lookup_context.rb, line 120 def find_file(name, prefixes = [], partial = false, keys = [], options = {}) @view_paths.find_file(*args_for_lookup(name, prefixes, partial, keys, options)) end
view_paths=(paths)
click to toggle source
Whenever setting view paths, makes a copy so that we can manipulate them in instance objects as we wish.
# File lib/action_view/lookup_context.rb, line 111 def view_paths=(paths) @view_paths = ActionView::PathSet.new(Array(paths)) end
with_fallbacks() { || ... }
click to toggle source
Adds fallbacks to the view paths. Useful in cases when you are rendering a :file.
# File lib/action_view/lookup_context.rb, line 140 def with_fallbacks added_resolvers = 0 self.class.fallbacks.each do |resolver| next if view_paths.include?(resolver) view_paths.push(resolver) added_resolvers += 1 end yield ensure added_resolvers.times { view_paths.pop } end
Private Instance Methods
args_for_any(name, prefixes, partial)
click to toggle source
# File lib/action_view/lookup_context.rb, line 174 def args_for_any(name, prefixes, partial) name, prefixes = normalize_name(name, prefixes) details, details_key = detail_args_for_any [name, prefixes, partial || false, details, details_key] end
args_for_lookup(name, prefixes, partial, keys, details_options)
click to toggle source
# File lib/action_view/lookup_context.rb, line 154 def args_for_lookup(name, prefixes, partial, keys, details_options) name, prefixes = normalize_name(name, prefixes) details, details_key = detail_args_for(details_options) [name, prefixes, partial || false, details, details_key, keys] end
detail_args_for(options)
click to toggle source
Compute details hash and key according to user options (e.g. passed from render).
# File lib/action_view/lookup_context.rb, line 161 def detail_args_for(options) # :doc: return @details, details_key if options.empty? # most common path. user_details = @details.merge(options) if @cache details_key = DetailsKey.get(user_details) else details_key = nil end [user_details, details_key] end
detail_args_for_any()
click to toggle source
# File lib/action_view/lookup_context.rb, line 180 def detail_args_for_any @detail_args_for_any ||= begin details = {} registered_details.each do |k| if k == :variants details[k] = :any else details[k] = Accessors::DEFAULT_PROCS[k].call end end if @cache [details, DetailsKey.get(details)] else [details, nil] end end end
normalize_name(name, prefixes)
click to toggle source
Support legacy foo.erb names even though we now ignore .erb as well as incorrectly putting part of the path in the template name instead of the prefix.
# File lib/action_view/lookup_context.rb, line 203 def normalize_name(name, prefixes) prefixes = prefixes.presence parts = name.to_s.split("/".freeze) parts.shift if parts.first.empty? name = parts.pop return name, prefixes || [""] if parts.empty? parts = parts.join("/".freeze) prefixes = prefixes ? prefixes.map { |p| "#{p}/#{parts}" } : [parts] return name, prefixes end