Soy realmente nuevo en Rails y la canalización de activos me ha estado haciendo tropezar un poco. Por lo que entiendo, todos los archivos javascript en el directorio assets/javascripts se compilan en un único archivo js llamado application.js que contiene todas las funciones en todos los archivos js en el directorio. Mi primera pregunta es, ¿qué sucede si hay un conflicto de nombres y dos archivos en assets/javascripts tienen funciones con el mismo nombre?
En segundo lugar, ¿cuál es la mejor práctica para llamar a estas funciones? Por ejemplo, en mi opinión, tengo un modal con un formulario que, cuando se envía, quiero que desaparezca el modal. puedo hacer esto
app/views/mi_directorio/index.html.haml
= form_with url: my_directory_path, class: "form", :html => { onsubmit: "hideModal()" }, method: :get do |form| = form.date_select %br %button.btn.btn-primary{type: "submit", class: "submitBtn"} Submitaplicación/activos/javascripts/modal.js
function hideModal() { $modal.modal('hide'); } Y eso funciona bien. Pero por lo que he leído, no es una buena práctica llamar a javascript desde la vista de rieles. Así que mi segunda pregunta es, ¿cuál ES una buena práctica? Intenté eliminar la opción de onsubmit de mi formulario y hacer esto en su lugar
modal.js
$('.form').submit(function() { $modal.modal('hide'); }) pero esto no funciona. Supongo que porque no puede encontrar el formulario, porque no hay una etiqueta de secuencia de comandos con el archivo javascript dentro de index.html.haml . Supongo que no entiendo bien cómo funciona la canalización de activos y cómo "vincula" sus archivos y vistas de javascript.
Estoy trabajando con Rails 5.2.