javascript - rails ujs
¿Qué hace la función j en Rails? (2)
escape_javascript(javascript)
Escapa de retornos de carro y comillas simples y dobles para segmentos de JavaScript.
También disponible a través del alias j ().
De los rieles documentos .
Acabo de encontrar un blog que menciona una función j
en Rails. Lo estaban usando para hacer actualizaciones de páginas de estilo ajax.
$(''#cart'').html("<%=j render @cart %>");
Entiendo que están usando parciales para hacer que el cart
parcial, pero ¿de qué sirve j
? He encontrado algunos artículos que dicen que convierte la cadena en algo que JavaScript aceptará, pero ¿qué significa eso?
Peter realmente publicó la respuesta correcta. Pero trataré de elaborar:
Supongo que estás familiarizado con el concepto básico de ajax. Digamos que quieres poder crear comentarios de forma ajaxy. En rails, puede responder a las solicitudes POST en su CommentsController
través de:
def create
@comment = Comment.new(params[:comment])
respond_to do |format|
render.js
end
end
Esto significa que si se envía una solicitud ajax del cliente (a través de jquery / javascript) a CommentsController
, reconocerá el formato ( .js
) y responderá con el _create.js.erb parcial. El parcial representaría el nuevo comentario con algo como esto:
$(''.comments'').append("<%=j render @comment %>");
Ahora para obtener el método j o escape_javascript: Algunos usuarios malvados pueden enviar un comentario que contenga javascript (malicioso) que se ejecutará en su página a menos que haga uso del método j
que
Escapa de retornos de carro y comillas simples y dobles para segmentos de JavaScript.
y por lo tanto previene la ejecución del código en el navegador.