2014-09-03 22 views
5

Jestem świadomy tego posta tutaj:Ruby slim - klasa dla div od zmiennej

Ruby Slim - How do you define an element's class with a rails helper or variable?

i próbowałem wszystkie trzy rozwiązania. Dla mnie niestety żaden z nich nie działa.

forum.rb

.panel 
    .panel-heading 
    .span = @forum.name 
    .panel-body 
    .row 
     .col-md-7 #{t('global.topic')} 
     .col-md-3.value.title 
     .col-md-1.value.topic 
     .col-md-1.value.date 

forum_feed.js.coffee

window.ForumFeedUI = flight.component -> 
    @defaultAttrs 
    titleSelector: '.value.volume' 
    topicSelector: '.value.topic' 
    dateSelector: '.value.date' 

    @refresh = (event, data) -> 
    @update @select('volumSelector'), data.volume 
    @update @select('topicSelector'), data.topic 
    @update @select('dateSelector'), data.date 

to wszystko działa zgodnie z oczekiwaniami, gdy chcę wydrukować zmienne jako tekst na stronie internetowej. Jednak potrzebuję elementów div zawierających również zmienną dla tytułu. Cokolwiek próbuję, nie jestem w stanie uzyskać klasy div z zmienną tytułu.

wierzę, trzeba utworzyć pomocnika coś wzdłuż tych linii i content_tag:

content_tag(:div, content_tag(:p, "Hello world!"), class: "strong") 


div = t(".#{forum_title title}") 


def forum_title(title, &block) 
    content_tag :div, class: "col-md-3-#{title}" do 
    capture(&block) 
    end 
end 
+0

Na której linii właśnie masz zamiar mieć klasę dynamiczną? – Surya

+0

@ .col-md-1.value.title – domi771

+0

Przykro mi, ale wszystkie metody wymienione w linku, który wysłałeś, działają dla mnie. Jestem pewien, że coś jest nie tak z ustawionymi zmiennymi. Należy pamiętać, że zmienne powinny być zmiennymi typu Ruby, a nie zmiennymi JavaScript! – Surya

Odpowiedz

9

można spróbować:

.col-md-7 class="your-#{dynamic class}" 
+0

daje to pustą klasę – domi771

+0

, która powinna dać '

' – IS04

1

użyć alternatywnego [] notacja dla atrybutów CSS.

Te trzy linie są równoważne:

.col-md-6.title#foo Some content 

div.col-md-6.title#foo Some content 

div[class="col-md-6 title" id="foo"] Some content 

Do ostatniego, można umieścić Ruby #{} do cytatów, więc można to zrobić:

- myclass = "col-md-6" 
div[class="#{myclass} title" id="foo"] 

I IMO to najprostszy odpowiedź .