Ich versuche, eine Bildshow für den Header auf der Root-Seite einer RoR-Site zu haben, und alle anderen Seiten zeigen zufällig eines von drei anderen Bildern. Das Problem ist, ich weiß nicht, wie ich das zur Arbeit bringen soll. Irgendwelche Ideen?Wie schreibt man eine <%if then%> Anweisung, um ein Bild dynamisch anzuzeigen?
Antwort
in Ihrer Anwendung Layout können Sie den Standard-Header wie folgt definieren:
<% if content_for?(:header) %>
<%=yield(:header)%>
<% else %>
<%=image_tag(files[rand(files.length)])%>
<% end %>
Und in der Ansicht für Ihre Homepage, würden Sie es content_for
mit außer Kraft setzen:
<% content_for :header do %>
<%=image_tag 'home.jpg' %>
<% end %>
Normalerweise können Sie den Controller testen und entsprechend reagieren. Eine einfache Möglichkeit, dies zu verkapseln ist ein Helfer zu verwenden:
<%= image_tag(header_image) %>
Dieses einfach in ApplicationHelper umgesetzt werden könnten:
def header_image
case (params[:controller])
when 'home'
# Standard home page image
'/images/home_image.jpg'
else
# Randomly chosen header image
%w[ /images/x.jpg /images/y.jpg ].shuffle.first
end
end
Sie können ein bestimmtes Verzeichnis für Ihre Header-Bilder machen wollen und dann, dass laden Dynamisch auflisten, anstatt sie in Ihrem Helfer angeben zu müssen.
aus irgendeinem Grund, dass Sie lieber 'params [: controller]' über 'contrller.controller_name'? Das habe ich immer gemacht. –
Ist es nicht besser, die Methode 'header_image' in 'HomeHelper' zu überschreiben, als Controller-abhängige Logik in den Anwendungshelfer zu stellen? –
Gute Antwort. Wenn sich die Bilder wahrscheinlich ändern, können Sie anstelle des statischen Arrays von Bildnamen die Konfiguration mit 'YAML :: load (File.open (" # {RAILS_ROOT} /config/images.yml "))' –
Versuchen:
<%- files = %w(banner-1.png banner-2.png banner-3.png) -%>
<%= image_tag (files[rand(files.length)] if request.url == root_url) || 'banner.png' %>
Das beantwortet nicht wirklich den ersten Teil seiner Frage, wie man ein statisches Bild auf der Homepage zeigt, und rotiert nur zufällig auf den anderen Seiten. Auch sollte dies wahrscheinlich nicht inline, sondern als Teil eines Helfers sein. –
Tut mir leid, habe gerade gemerkt, dass ich den ersten Teil verpasst habe und hinzugefügt habe. Nur Code inline zur besseren Lesbarkeit angezeigt. –
- 1. Wie man eine langweilige if-Anweisung wiederholt
- 2. if-Anweisung, um Bild anzuzeigen, wenn Variablenwert höher als 0 ist
- 3. HTML-Dateien dynamisch generieren, um Bild und Video anzuzeigen
- 4. Wie schreibt man Exif-Daten auf ein Bild in Android?
- 5. Eine Zeile #if Anweisung
- 6. Wie WindowsPhotoGallery verwenden, um ein GIF-Bild mit Java anzuzeigen?
- 7. Eine if-Anweisung eingeben
- 8. Wie erkennt man ein Gerät, um ein mobiles Modell anzuzeigen?
- 9. Bild wird nicht in if-Anweisung angezeigt
- 10. JavaScript Eine If-Anweisung mit einer anderen If-Anweisung ausblenden
- 11. PHP if-Anweisung Problem
- 12. Simplifing eine verschachtelte IF-Anweisung
- 13. wiederhole eine if else-Anweisung
- 14. Wie eine if-Anweisung ein Textfeld in xcode ändern?
- 15. Wie schreibt man ein einfaches Fair-Lock?
- 16. Wie ein ASCII85 kodierten Bild anzuzeigen
- 17. Behalte die if-Anweisung
- 18. If-Anweisung im Unterstrich, um eine Bedingung zu überprüfen?
- 19. Wie schreibt man die Abfrage in SQL Server 2008 dynamisch?
- 20. einfache if-Anweisung gegen normalen if-Anweisung
- 21. Wie schreibt man eine WHERE-Anweisung basierend auf dem Wert einer CASE-Anweisung?
- 22. Wie benutze ich eine if/else-Anweisung?
- 23. Gibt es eine Möglichkeit, intelliJ idea Klappschalter für "if" -Anweisung anzuzeigen?
- 24. Wie schreibt man eine Variable NICHT in html_encode in rails?
- 25. Wie If-else if-Anweisung automatisch umwandeln
- 26. Wie erhält man eine DataGridViewCheckBoxColumn, um den DataRelation-Status anzuzeigen?
- 27. Wie mache ich eine "if-Anweisung" für Rails has_many Association?
- 28. C# - Einfachere/Kürzere Weg, um eine 'if-oder' Anweisung
- 29. PHP - umgekehrt, um in if-Anweisung
- 30. C# Wie schreibt man eine TextBox?
Verwenden von Layouts, vielleicht: http://guides.rubyonrails.org/layouts_and_rendering.html? –