Add DidYouMean suggestions for missing templates #41845
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@seejohnrun and I wrote this together on his Twitch stream a few months ago, and it took me forever to actually submit. Oops! 馃槄
This PR adds
DidYouMean
spelling suggestions onMissingTemplate
errors.We tried to do this efficiently, knowing that many applications have thousands of templates. Our approach was to match prefixes separately from names (ie. with
users/_form
we'd scoreusers
and_form
separately). Since we have multiple prefixes we're searching for (the inheritance chain of the controller) this reduces the amount of scoring we have to do. We also able to reuse scoring of the template names because action names are commonly reused (show
,edit
, etc.). To combine the two scores we add them together, which isn't necessarily "correct", but experimentally it provided the matches we hoped for.In the case that there is a template which matches by
virtual_path
but we got aMissingTemplate
for another reason (probably details not matching) we don't provide suggestions. In the future I'd like to add suggestions for mismatched details as well.