2016-12-14 5 views
0

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

// вид

<%= render layout: "layouts/partial", locals: {className: "classy"} do %> 
... 
<% end> 

// частичная

<div class="regular-div <%=className if className?%>"></div> 
+0

Что вы имеете в виду? Вы передаете локальную переменную 'className', а также ссылаетесь на' className'. Вы уверены, что это не просто опечатка или небрежная ошибка? – max

+0

'className' не попадает в частичный, как« классный ». Я хочу, чтобы мой div получил класс «classy». – stackjlei

+0

Это должно быть '<% = className, если local_assigns.has_key? (: ClassName)%>'. Поскольку 'className' и' className? 'Не совпадают. 'local_assigns.has_key? (: className)' является способом безопасной проверки, установлена ​​ли локальная переменная. – max

ответ

1

Чтобы проверить, если локальная переменная устанавливается использование local_assigns.has_key?(:some_key) или local_assigns[:some_key] для безопасного доступа к локальной переменной.

Изящный способ обработки общей задачи построения списка классов:

module ApplicationHelper 
    # Takes an array or list of classes and returns a string 
    # Example: 
    # class_list('a', 'b', nil, 'c') 
    # => "a b" 
    # class_list(['a', 'b', nil, 'c']) 
    # => "a b c" 
    def class_list(*classes) 
    [*classes].flatten.compact.join(' ') 
    end 
end 

Тогда вы можете сделать:

<div class="<%= class_list('regular-div', local_assigns[:className]) %>"></div> 
Смежные вопросы