2010-09-18 10 views
16

En lugar de¿Puede button_to generar <button> etiqueta en lugar de <input type = "submit" />?

<input type="submit" /> 

Deseo emitir

<button> 

utilizando el método button_to (rieles) 3.0.0

es esto posible?

+0

'button' no es específica a HTML5, ni es 'entrada' para botones obsoletos en HTML5. –

+0

En realidad, '

+0

Lo siento por la confusión, es más una preferencia mía el uso de botones debido a la flexibilidad del contenido y la facilidad de diseño. Me gusta diseñar todas las etiquetas predeterminadas, así que mantener los botones fuera de las entradas ayuda. – Graham

Respuesta

4

Puede reemplazar al button_to ayudante en ApplicationHelper para representar una etiqueta button en su lugar. Mira el código que button_to ya tiene y modifícalo para tus propósitos.

+0

¿Por qué esta respuesta fue rechazada? Parece una sugerencia razonable para mí? ¿Hay algún problema al reemplazar el botón_to? –

+6

@SteveSmith Probablemente la falta de ejemplo. – Noz

+0

Además, reemplazar a los ayudantes, más conocidos como parches de mono, no es a prueba de futuro. Dado que este es un código de vista en el que nada depende de él, ¿tal vez le importa menos? – Woahdae

0

por lo general sólo se adhieren esto en mi archivo application_helper.rb:

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

entonces se le puede llamar desde un punto de vista de este modo:

button_tag "Save", :class => 'accept' 
+0

Supongo que esto fue downvoted porque ahora está en Rails: http://api.rubyonrails.org/v3.2.13/classes/ActionView/Helpers/FormTagHelper.html#method-i-button_tag – nruth

1

Por lo que puedo ver rieles ya tiene una ayudante a las etiquetas de salida; se llama button_tag (en lugar de button_to).

es así, usted podría usar lo siguiente en sus puntos de vista, no veo la necesidad de anular button_to:

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

hay necesidad de reemplazar. Además, se recomienda suministrar siempre el parámetro: type dado que se procesa de manera diferente en diferentes navegadores.

+2

Esto no es lo que hace 'button_to' . –

+0

@ClemensHelm ¿Puedes explicar más tu voto bajista? Ni siquiera menciono qué button_to se supone que debe hacer en mi respuesta. ¿Puede decirme cómo está mal la respuesta o cómo se puede mejorar? – FireDragon

+0

Creo que lo que @Clemens Helm está tratando de decir es que 'button_to' genera un formulario. El póster original desea generar un formulario con un 'botón' de tipo enviar en lugar de una etiqueta de 'entrada'. – Mohamad

10

A partir de la última versión de Rails (4.0.2, no estoy seguro acerca de las versiones anteriores) pasando un bloque a button_to se invoca la lógica de bifurcación en el asistente que crea un elemento de botón en lugar de una entrada.

Por ejemplo, si usted quiere hacer un 'eliminar' elemento de botón en haml, arranque & fontawesome (mi caso de uso):

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

Si usted quiere que sean simplemente siempre elementos del botón no importa qué , siempre puedes tener el contenido de tu botón dentro de un bloque en lugar del primer argumento. No estoy seguro de cuál es la compensación.

3

I acaba de encontrar que el cambio de button_to a la utilización de un bloque degenera etiqueta botón en lugar de entrada:

así:

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

Genera:

<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> 
+0

Soy demasiado perezoso para anular el método button_to, así que esto funcionó para mí :) – JustMichael

Cuestiones relacionadas