w3schools img attribute javascript ruby-on-rails-3 assets asset-pipeline

javascript - img - Dirige a los ayudantes en la cartera de activos



title label html (2)

utilizando Rails 3.1.0.rc4, estoy intentando acceder a un helper de ruta en un archivo javascript (event.js.erb en este caso) y parece que no están cargados en ese momento. Al solicitar el archivo combinado /assets/application.js, obtengo:

throw Error("NameError: undefined local variable or method `events_path'' for #<#<Class:0x00000001580010>:0x00000003191510>/n (in /<...>/app/assets/javascripts/event.js.erb)")

¿Alguna idea de cómo acceder al ayudante de ruta allí?


ACTUALIZACIÓN: Ahora hay una gema que hace esto por usted: js-routes

El problema es que Sprockets está evaluando el ERB fuera del contexto de su aplicación Rails, y la mayoría de las cosas que espera no están allí.

Puede agregar cosas a su contexto de Piñones como lo hace:

Rails.application.assets.context_class.class_eval do include Rails.application.routes.url_helpers end

Eso está muy bien, pero conseguir los ayudantes que requieren una identificación para trabajar es un poco más complicado. Voy a utilizar una técnica llamada Plantilla de URI :

var event_path = "<%= CGI.unescape event_path(''{event_id}'') %>";

que devuelve /events/{event_id} que puedes representar en una url usando un objeto como { event_id: 1 } . Vea el método de asignación de String # de SugarJS como ejemplo de implementación de esto. También podrías enrollar el tuyo como lo hice yo.


Podrías mover el archivo a las vistas donde tiene acceso al contexto adecuado, luego tirarlo al cliente desde una etiqueta de origen JS. Refiriéndose a MyRailsApp :: Application.routes.url_helpers puede no ser el mejor si está escribiendo un motor.