rails javascript ruby-on-rails ajax partial-views

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.