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 132 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 127 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 114 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 123 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 119 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 110 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 139 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 173 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 153 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 160 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 179 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 202 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