Может button_to генерировать тег <button>вместо <input type = "submit" />? - PullRequest
16 голосов
/ 18 сентября 2010

Вместо

<input type="submit" />

Я хочу вывести

<button>

с использованием метода button_to (rails 3.0.0)

Возможно ли это?

Ответы [ 5 ]

10 голосов
/ 14 февраля 2014

Начиная с последней версии Rails (4.0.2, не уверен в предыдущих версиях) передача блока в button_to вызывает вспомогательную логику в помощнике, который создает элемент кнопки вместо ввода.

Например, если вы хотите сделать элемент кнопки «удалить» в haml, bootstrap & fontawesome (мой пример использования):

= button_to(foo_path(@foo),
  class: 'btn btn-sm', method: :delete, remote: true) do
  <i class="fa fa-times"></i>

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

4 голосов
/ 25 ноября 2014

Я только что обнаружил, что изменение button_to на использование блока создает тег кнопки вместо ввода:

так:

<%= button_to account_path(@account), data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-default btn-danger' do %>
  Inactivate
<% end %>

Генерирует:

<form method="post" class="button_to" action="/accounts/30">
  <div>
    <input type="hidden" value="delete" name="_method">
      <button type="submit" data-confirm="Are you sure?" class="btn btn-default btn-danger">
          Inactivate
      </button>
    <input type="hidden" value="" name="authenticity_token">
  </div>
 </form>
4 голосов
/ 18 сентября 2010

Вы можете переопределить помощник button_to в ApplicationHelper, чтобы вместо этого отображать тег button.Посмотрите на код, который button_to уже есть, и измените его в соответствии с вашими целями.

3 голосов
/ 27 декабря 2012

из того, что я вижу, у Rails уже есть помощник для вывода тегов;он называется button_tag (вместо button_to).

, поэтому вы можете просто использовать следующее в своих представлениях, я не вижу необходимости переопределять button_to:

<%= button_tag "Button Text", :class => "btn", :type => "submit" %>

не нужнопереопределить.также рекомендуется всегда указывать параметр: type, поскольку он отображается по-разному в разных браузерах.

0 голосов
/ 27 ноября 2011

Обычно я просто втыкаю это в мой файл application_helper.rb:

  def button_tag(text, options={})
    content_tag(:button, {:type => "submit"}.merge(options)) { text }
  end

Затем вы можете вызвать его из вида следующим образом:

button_tag "Save", :class => 'accept'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...