Rails: условно установка атрибута CLASS для тега HTML - PullRequest
1 голос
/ 11 марта 2012

мой вопрос касается Rails + HAML

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

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

Итак, как я могу сделать это прямо с контроллера? Какие переменные контроллера могут устанавливать класс тега html?

Ответы [ 3 ]

1 голос
/ 11 марта 2012

Haml на самом деле не рекомендует использовать логику в представлениях и позволяет легко создавать помощников. Поэтому одним из решений было бы создание вспомогательного метода с любой логикой внутри.

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

Но опять же, я бы пошел за помощником.

1 голос
/ 14 марта 2012

Для простой логики (например, установки класса) вы можете использовать haml_tag, который представляет значение атрибута класса в виде строки:

- haml_tag :th, class: "#{'hilite' if params[:order_by]=='title'}" do
    - haml_concat link_to 'Movie Title', movies_path(order_by: 'title')

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

0 голосов
/ 11 марта 2012

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

...