mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
2d3a6a0cb8
By default, variants in the templates will be picked up if a variant is set and there's a match. The format will be: app/views/projects/show.html.erb app/views/projects/show.html+tablet.erb app/views/projects/show.html+phone.erb If request.variant = :tablet is set, we'll automatically be rendering the html+tablet template. In the controller, we can also tailer to the variants with this syntax: class ProjectsController < ActionController::Base def show respond_to do |format| format.html do |html| @stars = @project.stars html.tablet { @notifications = @project.notifications } html.phone { @chat_heads = @project.chat_heads } end format.js format.atom end end end The variant itself is nil by default, but can be set in before filters, like so: class ApplicationController < ActionController::Base before_action do if request.user_agent =~ /iPad/ request.variant = :tablet end end end This is modeled loosely on custom mime types, but it's specifically not intended to be used together. If you're going to make a custom mime type, you don't need a variant. Variants are for variations on a single mime types.
18 lines
915 B
Ruby
18 lines
915 B
Ruby
require 'abstract_unit'
|
|
|
|
class FixtureResolverTest < ActiveSupport::TestCase
|
|
def test_should_return_empty_list_for_unknown_path
|
|
resolver = ActionView::FixtureResolver.new()
|
|
templates = resolver.find_all("path", "arbitrary", false, {:locale => [], :formats => [:html], :variants => [], :handlers => []})
|
|
assert_equal [], templates, "expected an empty list of templates"
|
|
end
|
|
|
|
def test_should_return_template_for_declared_path
|
|
resolver = ActionView::FixtureResolver.new("arbitrary/path.erb" => "this text")
|
|
templates = resolver.find_all("path", "arbitrary", false, {:locale => [], :formats => [:html], :variants => [], :handlers => [:erb]})
|
|
assert_equal 1, templates.size, "expected one template"
|
|
assert_equal "this text", templates.first.source
|
|
assert_equal "arbitrary/path", templates.first.virtual_path
|
|
assert_equal [:html], templates.first.formats
|
|
end
|
|
end
|