Как написать оператор <% if then%> для динамического отображения одной картинки? - PullRequest
0 голосов
/ 22 ноября 2010

Я пытаюсь показать одно изображение для заголовка на корневой странице сайта RoR, и на всех других страницах будет случайным образом отображаться одно из трех других изображений. Проблема в том, что я не знаю, как заставить это работать. Есть идеи?

Ответы [ 3 ]

4 голосов
/ 22 ноября 2010

Обычно вы можете проверить контроллер и реагировать соответствующим образом. Простой способ инкапсулировать это - использовать помощник:

<%= image_tag(header_image) %>

Это можно реализовать просто в ApplicationHelper:

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

Возможно, вы захотите создать специальный каталог для ваших изображений заголовков и затем динамически загрузить этот список вместо того, чтобы указывать их в вашем помощнике.

1 голос
/ 22 ноября 2010

В макете приложения вы можете определить заголовок по умолчанию следующим образом:

<% if content_for?(:header) %>
<%=yield(:header)%>
<% else %>
<%=image_tag(files[rand(files.length)])%>
<% end %>

И в представлении для домашней страницы вы можете переопределить его, используя content_for:

<% content_for :header do %>
<%=image_tag 'home.jpg' %>
<% end %>
0 голосов
/ 22 ноября 2010

Попробуйте:

<%- files = %w(banner-1.png banner-2.png banner-3.png) -%>
<%= image_tag (files[rand(files.length)] if request.url == root_url) || 'banner.png' %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...