Интерполировать SASS в HAML для background-image: -> Объект в Rails - PullRequest
7 голосов
/ 10 апреля 2011

Я пытаюсь получить фоновое изображение для каждого элемента списка, чтобы зависеть от того, на какой объект он ссылается! Не должно быть слишком сложно, но я не мог понять, как это сделать в SASS. Вот моя попытка из HAML, потому что здесь я буду перебирать коллекцию различных средств:

Приложение / просмотров / Услуги / index.html.haml

#facility
  - @facilities.each do |facility|
    %ul#facilities
      %li
        :sass
          background-image: url(#{image_tag "logos/#{facility.image}.jpg"})
        = link_to facility.name, facility_path(facility)

Но ошибка, которую я получаю, выглядит следующим образом:

ошибка

Invalid CSS after "url(": expected ")", was "<img alt="Thebi..." Arounnd line 6 Для одного из сгенерированных изображений.

Это не может быть так сложно ... не так ли? Любая помощь с благодарностью.

Ответы [ 2 ]

11 голосов
/ 10 апреля 2011

Не используйте sass для этого, вы заплатите значительный штраф за производительность без какой-либо выгоды.Просто используйте встроенные стили HTML:

#facility
  - @facilities.each do |facility|
    %ul#facilities
      %li{:style => "background-image: url(#{image_path "logos/#{facility.image}.jpg"})"}
        = link_to facility.name, facility_path(facility)
1 голос
/ 10 апреля 2011

Вам необходимо удалить тег изображения.

В настоящее время ваша CSS расширяется до:

background-image: url('<img src=""</img>')

Вы должны изменить его на:

background-image: url("public/images/#{facility.image}.jpg")

Я проверю, есть ли для этого помощник.

РЕДАКТИРОВАТЬ: помощник image_path , поэтому вам нужно:

background-image: url(#{image_path "logos/#{facility.image}.jpg"})
...