Skip to content

Commit

Permalink
Update template missing text in Guide
Browse files Browse the repository at this point in the history
Changes the Getting Started guide explanation for
`ActionController::MissingExactTemplate` error, to reflect the current message.

Follow up for #29286, #35148

[ci skip]
  • Loading branch information
utilum committed Feb 4, 2019
1 parent 84ff78b commit 744ef60
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions guides/source/getting_started.md
Expand Up @@ -461,22 +461,19 @@ available, Rails will raise an exception.

Let's look at the full error message again:

>ArticlesController#new is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: [] NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not… nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.
>ArticlesController#new is missing a template for request formats: text/html
That's quite a lot of text! Let's quickly go through and understand what each
part of it means.
>NOTE!
>Unless told otherwise, Rails expects an action to render a template with the same name, contained in a folder named after its controller. If this controller is an API responding with 204 (No Content), which does not require a template, then this error will occur when trying to access it via browser, since we expect an HTML template to be rendered for such requests. If that's the case, carry on.
The first part identifies which template is missing. In this case, it's the
The message identifies which template is missing. In this case, it's the
`articles/new` template. Rails will first look for this template. If not found,
then it will attempt to load a template called `application/new`. It looks for
one here because the `ArticlesController` inherits from `ApplicationController`.

The next part of the message contains `request.formats` which specifies
the format of template to be served in response. It is set to `text/html` as we
requested this page via browser, so Rails is looking for an HTML template.
`request.variant` specifies what kind of physical devices would be served by
the response and helps Rails determine which template to use in the response.
It is empty because no information has been provided.
then it will attempt to load a template called `application/new`, because the
`ArticlesController` inherits from `ApplicationController`.

Next the message contains `request.formats` which specifies the format of
template to be served in response. It is set to `text/html` as we requested
this page via browser, so Rails is looking for an HTML template.

The simplest template that would work in this case would be one located at
`app/views/articles/new.html.erb`. The extension of this file name is important:
Expand Down

0 comments on commit 744ef60

Please sign in to comment.