Usando una variable javascript en escape_javascript
Frecuentes
Visto 1,131 veces
0
He estado tratando de hacer que funcione lo siguiente: quiero que una función jQuery cargue un parcial específico cuando se hace clic en un determinado div con una ID. Quiero que esta identificación sea parte de: los locales que estoy usando junto con el parcial.
$("#main>.dots").live("mousedown", function(e) {
$num = 8;
$("#main").append("<%= escape_javascript(render :partial => 'projects/show', :locals => {:i => "#{$num}"}).html_safe %>")
})
Hasta ahora no he podido hacerlo bien. El código anterior devuelve el 'ID llamado para nil', por lo que $num no se asigna correctamente a la función escape_javascript. Cuando reemplazo $num con el número entero 8, funciona (entre las etiquetas <% %>).
¿Soluciones?
la sintaxis:
$("#main").append("<%= escape_javascript(render :partial => 'projects/show', :locals => {:i => 8}).html_safe %>")
funciona, así que esa es la forma en que quiero ir, excepto que el 8 es jQuery, por supuesto
1 Respuestas
0
He arreglado esto haciendo
var dataString = "projectid=" + $(this).attr("id") + "&left=" + $(this).css("left") + '&top=' + $(this).css("top");
$.ajax({
url: "/projects/show",
type: "get",
data: dataString,
success: function(data) {
$("#main").append(data)
}
});
Entonces, básicamente, usé AJAX para poder enviar datos POST a la acción del controlador correcto :)
Respondido el 16 de enero de 13 a las 16:01
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas jquery ruby-on-rails escaping string-interpolation or haz tu propia pregunta.
.live()
está depreciado (y muy lento) - PopnoodlesGracias por la respuesta, los reemplazaré con 'on ()' :) (olvidé que estaba en desuso) - Flame
¿Hay alguna razón específica por la que está usando mousedown en lugar de hacer clic? - Popnoodles
no, lo estoy cambiando a 'clic' ahora, pero una parte de mi código no parece funcionar ahora. todo debe estar encerrado en '$(function() { //code }', ¿verdad? - Flame
Creo que ya encontré una respuesta: jquery solo puede asignar eventos cuando ya existen nombres de clase, y muchas de mis funciones están dirigidas a HTML que aún no se ha cargado en la página. Estoy volviendo a .live() ya que parece funcionar mejor. <-- Definitivamente buscaré una alternativa cuando vea tiempo - Flame