2014-09-03 4 views
5

Я знаю этот пост здесь:Рубин тонкий - класс для DIV с переменной

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

, и я попробовал все три решения. Для меня, к сожалению, ни один из них не работает.

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 

Это все работает, как и ожидалось, когда я хочу, чтобы напечатать переменные в виде текста на веб-сайте. Однако мне нужны divs, содержащие также переменную для названия. Независимо от того, что я пытаюсь, я не могу получить класс divs с переменной заголовка.

Я считаю, что нужно создать вспомогательный то вдоль этих линий и 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

На какой строке вы рассчитываете иметь динамический класс? – Surya

+0

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

+0

Прошу прощения, но все методы, перечисленные в ссылке, которую вы опубликовали, работают для меня. Я уверен, что что-то не так с переменными, которые вы установили. Обратите внимание, что переменные должны быть переменными Ruby, а не переменными JavaScript! – Surya

ответ

9

вы можете попробовать:

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

это дает мне пустой класс – domi771

+0

это должно дать '

' – IS04

1

Используйте альтернативный [] обозначения для атрибутов CSS.

Эти три строки эквивалентны:

.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 

Для последнего, вы можете поместить рубин #{} в кавычки, таким образом, вы можете сделать это:

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

И IMO, что это самый простой ответ ,