una type script rails página llamar librería insertar escribir ejemplos desde dentro cómo como cargaríamos abrir javascript ruby-on-rails ruby-on-rails-3 asset-pipeline erubis

type - Usar un método de ayuda de Rails dentro de un activo de JavaScript



llamar js desde html (5)

De hecho, estoy de acuerdo con @eirc answer (teniendo en cuenta la documentación de Sprockets). Pero consideraría incluir módulos auxiliares en el tiempo de arranque de los rieles. Según

# config/initializers/sprockets.rb Rails.application.assets.context_class.instance_eval do include ActionView::Helpers include Rails.application.routes.url_helpers include MyModule end

esto se debe a: https://github.com/rails/sprockets-rails/blob/master/lib/sprockets/railtie.rb#L23

¿Hay alguna forma de utilizar un método de ayuda de Rails, más específicamente, un método de ayuda de ruta dentro de un archivo de activos de JavaScript. Este archivo foo.js.coffee.erb

$(''#bar'').val("<%= create_post_path %>")

Me encantaría si pudiera obtener de erubis

$(''#bar'').val("path/to/create")


En realidad, no estoy seguro de si esto ayuda, pero hay una manera de definir sus propios ayudantes para su uso durante la rake precompile

Crea un nuevo inicializador y ponlo en él:

module Sprockets module Helpers module RailsHelper def my_helper_method ... end end end end

Y luego puedes:

<%= my_helper_method %>

en sus activos .erb


Esto también hará el truco en un inicializador:

Sprockets::Context.send :include, MyHelper

En el modo de desarrollo, el ayudante no se volverá a cargar en cada solicitud.

Su enfoque con UrlHelpers funcionará hasta que necesite encontrar post_path(...um...we don''t know what post id we''ll need at compile time...) . Hay una gema de rubí que reimplanta todos los Rails UrlHelpers en JavaScript: https://github.com/railsware/js-routes


No estoy muy seguro, por qué quieres hacer esto.

  • Evitará que el archivo javascript se almacene en caché, ya que contiene un valor dinámico

  • Tendría un acoplamiento entre su javascript / coffeescript y rieles

De ser posible, le aconsejaría que resuma su problema al proporcionar su ruta de destino en la vista y recuperar el valor del elemento DOM cuando ocurra el evento específico. Al igual que los "discretos adaptadores de scripting" para Rails do. Ejemplo: https://github.com/rails/jquery-ujs/blob/master/src/rails.js#L157-173


Puede incluir cualquier helper / module / class en una plantilla erb con:

<% environment.context_class.instance_eval { include MyHelper } %>

Ver: https://github.com/rails/sprockets/blob/master/lib/sprockets/environment.rb y https://github.com/rails/sprockets/blob/master/lib/sprockets/context.rb

Para utilizar los ayudantes de url, debe incluir los ayudantes de sus aplicaciones específicas.

Están disponibles en Rails.application.routes.url_helpers así que:

<% environment.context_class.instance_eval { include Rails.application.routes.url_helpers } %>

EDITAR: Se corrigieron los enlaces al repositorio de piñones movidos, pero no estoy seguro de que esto tenga sentido tantos años después.