Helper para usar enlace en lugar de submit en formularios?

Tengo un formulario y por cuestión de css me vendría bien usar un enlace
de
texto en lugar de un submit.

Creo que la única alternativa a submit_tag es image_submit_tag para
hacerlo
con una imagen… ¿No habría una especie de link_submit_tag para hacerlo
con
un enlace de texto?

Con CSS puedes poner el botón con la misma apariencia que si fuese un
texto,
no?

El día 26/10/07, Jaime I. [email protected] escribió:

Hola

Tengo un formulario y por cuestión de css me vendría bien usar un
enlace de texto en lugar de un submit.

Creo que la única alternativa a submit_tag es image_submit_tag para
hacerlo con una imagen… ¿No habría una especie de link_submit_tag
para hacerlo con un enlace de texto?

No sé si habrá formas mejores, pero se me ocurren un par así a bote pronto:

Si es un formulario remoto, creo podrías usar un link_to_remote con el
parámetro :with

Si es un formulario normal, podrías usar link_to_function y darle como
function $(‘id_del_form’).submit()

saludos,

javier ramírez

On 26/10/2007, Jaime I. [email protected] wrote:

Tengo un formulario y por cuestión de css me vendría bien usar un enlace de
texto en lugar de un submit.

Enviar un formulario mediante un enlace es una aberración, tanto en
términos de arquitectura (GET/POST, idempotencia, esas cosas),
usabilidad y expectativas del usuario y accesibilidad (sólo te va a
funcionar con javascript)

A nivel de marcado, lo que harías sería hacer un simple enlace HTML y
enviar con javascript. La forma de hacerlo minimamente accesible
seríatener en el marcado un botón submit y eliminarlo dinamicamente con js,
al tiempo que creas el enlace correspondiente.

Pero sigue siendo un invento del TBO que en rarísimos casos tendrá
justificación y dificilmente tendría que tener que ver con el CSS.


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.

Manuel González Noriega
escribió:> Enviar un formulario mediante un enlace es una aberración, tanto en

términos de arquitectura (GET/POST, idempotencia, esas cosas),
usabilidad y expectativas del usuario y accesibilidad (sólo te va a
funcionar con javascript)

100% de acuerdo. Lo malo es que es una aberración que Rails incorpora de
serie en los link_to que usan :method, por ejemplo para generar enlaces
que eliminan recursos REST.

Yo como alternativa de momento uso guarrerías caseras del tipo:

def link_to_delete_resource(resource, options = {})

 class_name = resource.class.to_s.underscore
 url = options[:url] || eval("#{class_name}_path(resource)")
 input_id = "delete-#{class_name}-#{resource.id}"

 if options[:confirm]
   confirm_script = <<-CONFIRM_SCRIPT
     <script>$("##{input_id}").bind("click", function(){return

confirm(“#{options[:confirm]}”);});
CONFIRM_SCRIPT
end

 return <<-HTML
   <form method="POST" action = "#{url}" class="link delete">
     <input type="hidden" name="_method" value="delete" />
     <input id="#{input_id}" class="link delete" type="submit"

value=“borrar” />
#{confirm_script}

HTML
end

…y luego ya me ocupo en las CSS de darle a las cosas la pinta
adecuada. Pero vamos, esto me sigue pareciendo una solución pelín
cutripeich :frowning:


Raul M. - Freelance Web D.
http://raul.murciano.net

2007/10/26, Manuel González Noriega [email protected]:

On 26/10/2007, Jaime I. [email protected] wrote:

Tengo un formulario y por cuestión de css me vendría bien usar un enlace
de
texto en lugar de un submit.

Enviar un formulario mediante un enlace es una aberración, tanto en
términos de arquitectura (GET/POST, idempotencia, esas cosas),
usabilidad y expectativas del usuario y accesibilidad (sólo te va a
funcionar con javascript)

Es cierto, Manuel. Cuando digo “por cuestión de css” me refiero más bien
a
“por cuestión del css que me ha pasado la diseñadora y que se va a negar
a
rehacer porque está muy liada”. XDDD

O sea, que ya se que lo suyo es un botón submit, pero es lo que hay
ahora:
un enlace, y tengo que hacerlo funcionar. Cuando la tenga más relajada
ya le
pediré que lo hagamos de manera que no necesitemos javascript.

Gracias!

On Oct 26, 2007, at 11:50 AM, Jaime I. wrote:

2007/10/26, javier ramirez [email protected]:
Si es un formulario normal, podrías usar link_to_function y darle como
function $(‘id_del_form’).submit()

Dados los imperativos de la vida real™ que mencionas :slight_smile: es una
buena opcion ya que al tratarse de un link_to_function los crawlers
(si pueden llegar ahi) y aceleradores web en principio no siguen el
enlace. El metodo HTTP es el del form, que tambien es lo suyo.

2007/10/26, javier ramirez [email protected]:

Si es un formulario normal, podrías usar link_to_function y darle como
function $(‘id_del_form’).submit()

Eso me ha ido bien, gracias Javier.

On 26/10/2007, Jaime I. [email protected] wrote:

O sea, que ya se que lo suyo es un botón submit, pero es lo que hay ahora:
un enlace, y tengo que hacerlo funcionar. Cuando la tenga más relajada ya le
pediré que lo hagamos de manera que no necesitemos javascript.

Me hago cargo de las luchas con diseñadores, peeero tienes a tu
alcance una solución de compromiso fácil y que no se carga la
accesibilidad de cuajo

  • Crea tu rhtml con un submit normal

Ejecuta en onload un js que

  • Elimine el botón submit
  • Cree un enlace que haga el submit onclick
  • Lo añada al formulario

Con esto sales del problema de forma bastante airosa.


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.