If a template with the specified format does not exist an `ActionView::MissingTemplate` error is raised.
##### The `:variants` Option
This tells rails to look for template variations of the same format.
You can specify a list of variants by passing the `:variants` option with a symbol or an array.
An example of use would be this.
```ruby
# called in HomeController#index
rendervariants: [:mobile,:desktop]
```
With this set of variants Rails will look for the following set of templates and use the first that exists.
-`app/views/home/index.html+mobile.erb`
-`app/views/home/index.html+desktop.erb`
-`app/views/home/index.html.erb`
If a template with the specified format does not exist an `ActionView::MissingTemplate` error is raised.
Instead of setting the variant on the render call you may also set it on the request object in your controller action.
```ruby
defindex
request.variant=determine_variant
end
private
defdetermine_variant
variant=nil
# some code to determine the variant(s) to use
variant=:mobileifsession[:use_mobile]
variant
end
```
#### Finding Layouts
To find the current layout, Rails first looks for a file in `app/views/layouts` with the same base name as the controller. For example, rendering actions from the `PhotosController` class will use `app/views/layouts/photos.html.erb` (or `app/views/layouts/photos.builder`). If there is no such controller-specific layout, Rails will use `app/views/layouts/application.html.erb` or `app/views/layouts/application.builder`. If there is no `.erb` layout, Rails will use a `.builder` layout if one exists. Rails also provides several ways to more precisely assign specific layouts to individual controllers and actions.