Am einfachsten ist es, eine Aktion zu erstellen, die auf ein zufälliges Bild umleitet, dem der Browser dann folgt.
app/controller/background_controller.rb
class BackgroundController < ApplicationController
def image
redirect_to "/assets/images/background_#{rand(10)}.jpg"
end
end
Dies führt zu einer zufälligen Umleitung zu einem Hintergrundbild zwischen background_0.jpg
y background_9.jpg
config/routes.rb
Something::Application.routes.draw do
…
get '/random_background.jpg', to: 'background#image'
…
end
css
html{
background: url(/random_background.jpg) no-repeat center center fixed;
}
Etwas fortschrittlicher wäre es, so etwas in einer Middleware zu machen, so dass eine solche Anfrage nicht so einen ganzen Rails-Stack benötigt.
app/middleware/random_background_middleware.rb
class RandomBackgroundMiddleware
def initialize(app, count = 10)
@app = app
@count = count
end
def call(env)
if env["PATH_INFO"] == "/random_background.jpg"
[302, {"Location" => "/assets/images/background_#{rand(@count)}.jpg")}, '']
else
@app.call(env)
end
end
end
config/application.rb
config.middleware.insert_before 0, "RandomBackgroundMiddlware"
insert_before 0
wird verwendet, um sie an die Spitze der Middleware-Kette zu setzen
Oder noch besser wäre so etwas in der Webserver-Konfiguration. Aber ich weiß nicht, wie oder ob dies getan werden kann.