tag rails modal javascript ruby-on-rails

javascript - modal - ruby on rails assets



Rails 3-Estado del método "link_to_function" (3)

El ayudante link_to_function ha sido desaprobado nuevamente en 3.2.4 .

El método en sí es bastante simple y bueno en algunos casos de uso cuando necesita llamar a una función javascript específica, etc. Puede agregar fácilmente su propio ayudante para lograr la misma funcionalidad. El siguiente código fue copiado de Jeremy en https://github.com/rails/rails/pull/5922#issuecomment-5770442

# /app/helpers/link_to_function_helper.rb module LinkToFunctionHelper def link_to_function(name, *args, &block) html_options = args.extract_options!.symbolize_keys function = block_given? ? update_page(&block) : args[0] || '''' onclick = "#{"#{html_options[:onclick]}; " if html_options[:onclick]}#{function}; return false;" href = html_options[:href] || ''#'' content_tag(:a, name, html_options.merge(:href => href, :onclick => onclick)) end end

Al buscar una solución a un problema de javascript, observé varios comentarios sobre la link_to_function de link_to_function en Rails 3. Sin embargo, he podido completar una sección de mi proyecto basado en Rails-3 utilizando link_to_function . Funciona bien.

Al ser Rails nuevos, mi preocupación es que podría estar usando algo que no va a ser soportado a largo plazo o podría convertirse en un truco heredado. Al mirar api.rubyonrails.org, veo que link_to_function se link_to_function claramente en el módulo ActionView :: Helpers :: JavaScriptHelper como un método público compatible con Ruby on Rails v3.0.4. No hay advertencias u otras afirmaciones sobre la longevidad de la función.

¿Hay algún otro método / enfoque que deba usar en lugar de link_to_function en Rails 3? ¿O está bien usar link_to_function ?

Gracias.


Si bien tengo la intención de cambiar todo a javascript discreto, un buen paso intermedio (para mí) fue reemplazar

link_to_function icon_tag(''close.png''), ''$(this).parent().hide()'', :title => t(''actions.close''), :class => ''close''

con lo siguiente:

link_to icon_tag(''close.png''), ''#'', :onclick => ''$(this).parent().hide()'', :title => t(''actions.close''), :class => ''close''

Muy simple. Espero que esto ayude.


[Actualizar]

Como menciona TomH, ahora está en desuso de nuevo en Rails 3.2.4

[Respuesta original]

link_to_function ya no está en desuso y es seguro para su uso . Detalles:

link_to_function fue programado para ser eliminado en Rails 3 (y fue por un tiempo cuando Rails 3 estaba en beta), pero la función fue puesta nuevamente en https://github.com/rails/rails/commit/d69e561 . Varias personas se preguntaron (en voz alta, en los comentarios de la confirmación) por qué se devolvió la función, cuando el gran impulso en Rails 3 fue para JavaScript no intrusivo , por lo que DHH intervino:

Esto es para manejar activadores de funciones no genéricas explícitamente en ERb cuando no está dispuesto a conectarlo manualmente a través de JS. La gran victoria para UJS en Rails 3 es deshacerse de grandes franjas de código repetitivo, como datos confirmados y datos remotos. Estos genéricos son automáticos y no tienes que preocuparte por ello.

Pero para sus propias funciones, ala link_to_function "Agregar calendario", "Calendar.add ()", esta es una manera más directa e inmediata de comenzar. Si aún así prefiere pasar por un JS externo y cablearlo a mano a través de dom: listo, tenga un día de campo.

El soporte para UJS en Rails 3 no se trata de ser dogmático. Al igual que el soporte para REST no es. Expondremos el mayor valor para todos y luego permitiremos que los establecimientos lo hagan desde entonces. Aquí, tiene sentido.

Esto, por cierto, no se trata de un prototipo o cualquier otro framework js específico.