ВместоМожет button_to генерировать <button> тег вместо <input type = "submit" />?
<input type="submit" />
Я хочу вывести
<button>
с использованием метода button_to (рельсы 3.0.0)
Возможно ли это?
ВместоМожет button_to генерировать <button> тег вместо <input type = "submit" />?
<input type="submit" />
Я хочу вывести
<button>
с использованием метода button_to (рельсы 3.0.0)
Возможно ли это?
Вы можете переопределить вспомогательный помощник button_to
в ApplicationHelper
, чтобы вместо этого сделать тэг button
. Посмотрите на код, который button_to
уже имеет и модифицирует его в соответствии с вашими потребностями.
Почему этот ответ проголосовал? Это кажется мне разумным предложением? Есть ли проблема с переопределением button_to? –
@SteveSmith Возможно отсутствие примера. – Noz
Кроме того, переопределяющие помощники, более широко известные как перехват обезьян, не являются надежными для будущего. Так как это код просмотра, где от него ничего не зависит, может быть, вам все равно меньше? – Woahdae
Я обычно просто придерживаться этого в моем application_helper.rb файле:
def button_tag(text, options={})
content_tag(:button, {:type => "submit"}.merge(options)) { text }
end
Вы можете назвать это с тем, как так:
button_tag "Save", :class => 'accept'
Я предполагаю, что это было downvoted, потому что теперь в Rails: http://api.rubyonrails.org/v3.2.13/classes/ActionView/Helpers/FormTagHelper.html#method-i-button_tag – nruth
от того, что я могу видеть Rails уже есть помощник к выходным тегам; это называется button_tag
(вместо button_to
).
так, вы могли бы просто использовать следующее в ваших взглядах, я не вижу никакой необходимости переопределять button_to:
<%= button_tag "Button Text", :class => "btn", :type => "submit" %>
нет необходимости переопределять. Кроме того, рекомендуется всегда указывать параметр типа: поскольку он отличается от разных браузеров.
Это не то, что 'button_to' делает , –
@ClemensHelm вы можете объяснить больше своего downvote? Я даже не говорю о том, что button_to должно делать в моем ответе. Можете ли вы сообщить мне, как ответ неправильный или как его можно улучшить? – FireDragon
Я думаю, что @Clemens Helm пытается сказать, что 'button_to' генерирует форму. Оригинальный плакат хочет сгенерировать форму с кнопкой 'button' типа submit вместо тега' input'. – Mohamad
Начиная с последней версии Rails (4.0.2, не уверен в предыдущих версиях) передача блока в button_to вызывает логику ветвления в помощнике, которая создает элемент кнопки вместо ввода. не
Например, если вы хотите, чтобы сделать «Удалить» элемент кнопки в Haml, самозагрузки & fontawesome (мое использование случай):
= button_to(foo_path(@foo),
class: 'btn btn-sm', method: :delete, remote: true) do
<i class="fa fa-times"></i>
Если вы хотите, чтобы они просто всегда быть кнопка элементов независимо от того, что , вы всегда можете иметь содержимое своей кнопки внутри блока вместо первого аргумента. Не уверен, что такое компромисс.
Я только нашел, что изменение 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>
Мне слишком лениво переопределить метод button_to, так что это сработало для меня :) – JustMichael
'button' не является специфическим к HTML5, а также 'input' для кнопок, устаревших в HTML5. –
Собственно, '
Извините за путаницу, тем более мое предпочтение использовать кнопки из-за гибкости контента и простоты стилизации. Мне нравится стилизовать все теги по умолчанию, поэтому помогает поддерживать кнопки вне входных данных. – Graham