#ruby-on-rails #css #haml
#ruby-on-rails #css #haml
Вопрос:
Я работаю над приложением Rails и использую HAML для просмотра. Я хотел бы использовать технику «раздвижных дверей» для создания красивых кнопок, что означает, что мне нужно заставить HAML сгенерировать что-то похожее на следующий HTML:
<a href="#" class="button"><span class="button">Button text</span></a>
Я не смог выяснить, как это сделать по ссылке HAML или Google. Не могли бы вы помочь, пожалуйста? Заранее большое спасибо.
РЕДАКТИРОВАТЬ: Чтобы уточнить, мне нужно использовать помощник link_to, потому что я ссылаюсь на ресурс. Когда я пытаюсь передать блок в метод, я получаю сообщение об ошибке: undefined method 'stringify keys'
Ответ №1:
Попробуйте
= link_to invitation_path(invitation), :method=>:put, :class=>"button" do
%span(class="button")
Accept
Комментарии:
1. можете ли вы уточнить html, который вы хотите вывести. Я попробовал код, который я вставил в свой ответ, и он отображался идентично html в вашем вопросе. Есть ли какая-либо информация, которую вы упускаете, которая может быть причиной ошибки?
2. Конечно. У меня есть модель приглашения. Пользователь может принять или отклонить приглашение. В представлении у меня есть: link_to «Принять», приглашение, :метод => : поместить, :класс => ‘кнопка принять’. Я хочу также отобразить интервал внутри ссылки, как я описал в вопросе. Если я добавляю блок, я получаю ошибку, о которой упоминал выше. Кажется очень возможным, что то, что вы предложили, работает отлично, но терпит неудачу при работе с ресурсом.
3. Это работает! Большое спасибо. Я также предложил пару изменений к вашему ответу. Я не уверен, что меня интересует, в чем причина.
Ответ №2:
Это должно быть так просто, как:
%a(href="#" class="button")
%span(class="button") Button text
Или, если вы особенно хотите, чтобы это было в одной строке без каких-либо пробелов, вы можете сделать:
%a(href="#" class="button")<
%span(class="button") Button text
Комментарии:
1. К сожалению, мне нужно использовать помощник link_to. Извините, я не прояснил это в вопросе. Я отредактирую это соответствующим образом.