links - Cómo agregar mensaje de confirmación con link_to Ruby on rails
rails link_to do (7)
En primer lugar, debe verificar que su diseño tenga jquery_ujs . La mejor práctica para hacerlo incluyéndolo en su aplicación principal.js:
//= require jquery_ujs
Compruebe que ha incluido application.js en su diseño:
= javascript_include_tag :application
Mientras que, en el modo de desarrollo, vea su fuente html y verifique que jquery_ujs.js exista.
Ejecute su servidor y verifique que su etiqueta de enlace tenga un valor de confirmación de datos , por ejemplo:
<a href="/articles/1" data-confirm="Are you sure?" data-method="delete">
Si todos esos pasos son correctos, ¡todo debería funcionar!
Nota: revisa este RailsCast http://railscasts.com/episodes/136-jquery-ajax-revised
Quería agregar un mensaje de confirmación en la función link_to con Ruby.
= link_to ''Reset message'', :action=>''reset'' ,:confirm=>''Are you sure?''
¿Alguna idea de por qué no está funcionando?
Mira tu javascript_include_tag y debería funcionar bien:
<%= link_to("Reset message", :method => :reset, :class => ''action'', :confirm => ''Are you sure?'') %>
Mire este video de los videos de los rails para una mejor comprensión.
http://railscasts.com/episodes/205-unobtrusive-javascript
Documentación de rieles para link_to helper.
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
No puedo recordar cómo se hizo esto en Rails 3, pero en Rails 4 puedes simplemente:
<%= link_to ''Reset message'', { controller: ''your_controller'', action: ''reset'' }, data: {confirm: ''Are you sure?''} %>
Podría estar equivocado, pero no especifica un controlador junto con la opción :action
. ¿Has intentado lo siguiente? Suponiendo que tiene un recurso de messages
configurado en su ruta:
link_to ''Reset'', message_path(@message), :confirm => ''Are you sure?''
EDITAR : Arriba está en desuso. Rails 4.0 ahora acepta el aviso como un atributo de datos. Ver el documento here (Gracias @Ricky).
link_to ''Reset'', message_path(@message), :data => {:confirm => ''Are you sure?''}
Primero, debemos entender qué responde el paquete Js a este tipo de alertas en la aplicación de rieles. Entonces, para esto, el paquete jquery_ujs es responsable de mostrar las alertas en los rieles.
Por lo tanto, debe tener jquery & jquery_ujs en su archivo application.js.
//= require jquery
//= require jquery_ujs
Ahora, debemos confirmar que el archivo application.js está incluido en el diseño requerido o no. Por defecto, el archivo de diseño permanece en application.html.erb en la carpeta de vistas de diseño.
<%= javascript_include_tag ''application'' %>
A continuación, el enlace debe tener los atributos de confirmación de datos y método de datos como
<a href="/message/1/reset" data-method="delete" data-confirm="Are you sure?">
En erb, esto se puede escribir como,
= link_to ''Reset'', message_path(@message), data: {method: ''delete'', confirm: ''Are you sure?''}
Esto debería funcionar si todo está alineado de la misma manera.
Prueba esto:
= link_to ''Reset message'', {:action=>''reset''}, :confirm=>''Are you sure?''
o para ser más claro
= link_to(''Reset message'', {:action=>''reset''}, {:confirm=>''Are you sure?''})
Consulte http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
Verá que hay 3 parámetros, cuando está dando url como opciones como {:action => ..., :controller => ...}
link_to(body, url_options = {}, html_options = {})
En ruby, si el último parámetro en una llamada a función es un hash, no necesita envolverlo en {}
caracteres (en otras palabras, puede omitir eso en el caso, si el hash es el último parámetro), entonces el código que tiene provisto se interpretará como una llamada a función con solo 2 parámetros, cadena ''Reset message''
y {:action=>''reset'', :confirm=>''Are you sure?''}
hash y el :confirm=>''Are you sure?''
se interpretará como url_option
lugar de html_option