2012-09-20 17 views
42

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.¿Qué hace la función j en Rails?

$('#cart').html("<%=j render @cart %>"); 

me sale que están utilizando parciales para hacer que el cart parcial, pero cuál es el punto de j? He encontrado algunos artículos que dicen que convierte la cadena en algo que JavaScript aceptará, pero ¿qué significa eso?

Respuesta

51

escape_javascript(javascript)

Escapes retornos de carro y comillas simples y dobles para los segmentos de JavaScript.

También disponible a través del alias j().

A partir del the rails docs.

67

Peter en realidad publicó la respuesta correcta. Pero intentaré elaborar:

Supongo que está familiarizado con el concepto básico de ajax. Digamos que quieres ser capaz de crear comentarios de forma ajaxy. En los carriles puede responder a POSTAL peticiones en su CommentsController a través de:

def create 
    @comment = Comment.new(params[:comment]) 
    respond_to do |format| 
    render.js 
    end 
end 

Esto significa que si una petición AJAX desde el cliente (a través de jQuery/Javascript) se presenta a la CommentsController que reconocerá el formato (.js) y responde con el _create.js.erb parcial. El parcial sería entonces hacer que el comentario con algo como esto:

$('.comments').append("<%=j render @comment %>"); 

Ahora para llegar a la J o escape_javascript método: Algunos mal usuario puede enviar un comentario que contiene JavaScript (maliciosa), que haría ser ejecutado en su página menos que haga uso del método j cuales

retornos de carro se escapa y comillas simples y dobles para JavaScript segmentos.

y por lo tanto impide la ejecución del código en el navegador.

+0

Tenga en cuenta que, incluso si lo que está procesando no es creado por el usuario, probablemente todavía desee escapar de los caracteres que no son seguros para JavaScript porque de lo contrario su javascript podría romperse. – DaveMongoose

Cuestiones relacionadas