Это действительно зависит от того, что вам нужно. Если вы используете помощника только для рендеринга базового тега кнопки HTML, то может быть даже быстрее использовать тег HTML, даже не требуя HAML. Я предполагаю, что речь идет о контексте, где у чего-то могут быть плюсы и минусы.
%button.btn.btn-primary.primary-button{ type: 'submit' } Submit
<button class="btn btn-primary primary-button" type="subimt">Submit</button>
Это будет быстрее, поскольку rails даже не нужно переводить код HAML в HTML.
НО, помощник button_tag будет использоваться внутри формы, которая уже является помощником form_for / tag / with, окруженной другими помощниками text_field / text_field_tag, text_area / text_area_tag и т. Д., И имеет больше смысла просто использовать помощник button_tag для согласованности.
Вы можете задать тот же вопрос о% input {type: "text"} против text_field_tag, но проще использовать хелперы, поскольку он действительно легко обрабатывает имена полей для работы с рельсами из коробки: у вас могут быть префиксы, суффиксы, он обрабатывает массивы и т. д., а для сложных и вложенных форм это может быть проблемой в заднице. Использование только HAML будет означать, что вам придется задавать имена вручную, поэтому вам нужно, чтобы помощники быстрее разрабатывали ваши формы.
Кроме того, у помощников есть больше опций, чем у общих атрибутов html, которые хорошо работают с rails-ujs: подтверждение, отключение, удаленное и т. Д. Конечно, вы можете реплицировать те же атрибуты данных, созданные этими опциями, но согласованность с другими помощниками будет профессионалом, если вы уже используете их, вам не нужно будет помнить, если опция remote: true - это запись data: {remote: true}
или что-то еще.
Лично я всегда использую помощники форм rails, потому что я буду использовать их для форм и входных данных, поэтому вполне естественно использовать помощников submit_tag, button_tag и т. Д., Даже зная, что их довольно легко написать с помощью HAML.
И для последнего профессионала, я могу подумать, у вас может быть свой помощник button_tag. Если вы хотите, чтобы все ваши кнопки были класса «btn btn-primary», вы можете просто переопределить хелпер button_tag, и вам не нужно будет менять какое-либо представление.
Как минус, конечно, у вас есть скорость, использование помощника добавляет дополнительный шаг с дополнительной логикой. Я не думаю, что это будет реальная реальная проблема, поскольку это не очень тяжелая логика, и если вы действительно не хотите сжимать каждую миллисекунду, вы можете даже захотеть просто написать чистый HTML, а не даже HAML.
У вас также есть минус кривой обучения. Все знают HTML, и переход с HTML на HAML в большинстве случаев прост. Преобразование тега HTML в параметры тега помощника требует, чтобы вы прочитали документы помощника, у него есть некоторые предостережения (кнопка f.bag_tag? И т. Д.). Я также не думаю, что это действительно большая проблема, у всего есть кривая обучения, и я думаю, что профессионалы того стоят.