рельсы 3: показать ссылку как кнопку? - PullRequest
33 голосов
/ 06 июня 2011

На некоторых страницах без формы у меня есть несколько ссылок, которые выглядели бы лучше как кнопка, чем гиперссылка ...

Я думал, что button_to вместо link_to будет работать, но buton_to, похоже, всегда будет рассматриваться как сообщение.

Есть ли простой способ просто заменить (не отправлять) ссылку кнопкой?

Ответы [ 4 ]

73 голосов
/ 06 июня 2011

Все, что вам нужно сделать, это добавить :method => "get" в конец вашей кнопки, чтобы он воспринимался как ссылка

Кнопка_Путь

Использование users_path

<%= button_to "BUTTON: link version", users_path, :method => "get" %>

Путь CSS

Или вместо того, чтобы фактически вставлять форму в ваш HTML (что на самом деле делает button_to), вы можете использовать более чистый (с точки зрения веб-дизайна) метод и фактически просто стилизовать ссылку таким образом, чтобы она выглядела как кнопка Это имеет несколько преимуществ

Хранит формы вне вашего HTML, когда их действительно не должно быть Сохраняет ваш эрб чистым и нормальным, никаких сюрпризов Удивительно гибкий, вы можете заставить их выглядеть так, как вы хотите

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

a.button {
  background: transparent url('bg_button_a.gif') no-repeat scroll top right;
  color: #444;
  display: block;
  float: left;
  font: normal 12px arial, sans-serif;
  height: 24px;
  margin-right: 6px;
  padding-right: 18px; /* sliding doors padding */
  text-decoration: none;
}

Код приходит по ссылке выше. Какой бы метод вы ни выбрали, он должен работать отлично, наслаждайтесь!

12 голосов
/ 11 апреля 2016

Я думаю, что все, что вы хотите здесь, это просто представление.и если это так, то вы можете просто добавить класс к объекту класса в ссылке

<%= link_to 'Add Class', new_subject_path, class: "btn btn-primary"%>

10 голосов
/ 29 марта 2013

Мне недавно пришлось это сделать, потому что моя форма работала для link_to иначе, чем с button_to, и мне требовалась функциональность, указанная в ссылке.Лучшее решение, которое я нашел, вообще не использует CSS, а вместо этого вызывает .html_safe, чтобы экранировать html в коде ruby ​​и правильно отображать ссылку в виде кнопки.Что вы хотите сделать, это:

<%= link_to "<button>This is a button</button>".html_safe, some_path, :id => "button_id", :class => "button_class" %>
1 голос
/ 31 января 2017

Если все, что вам нужно, это сделать ссылку похожей на кнопку.

Все, что мне нужно сделать, это изменить link_to на button_to.

...