Гибкие кнопки с изображениями в HAML

#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. Извините, я не прояснил это в вопросе. Я отредактирую это соответствующим образом.