tbu*_*ann 49 javascript assets ruby-on-rails-3 asset-pipeline
使用Rails 3.1.0.rc4,我正在尝试访问javascript文件中的路由助手(在本例中为event.js.erb),看起来它们当时没有加载.在请求合并的/assets/application.js文件时,我得到:
throw Error("NameError: undefined local variable or method `events_path' for #<#<Class:0x00000001580010>:0x00000003191510>\n (in /<...>/app/assets/javascripts/event.js.erb)")
Run Code Online (Sandbox Code Playgroud)
知道如何在那里访问路由助手吗?
Ada*_*sek 88
更新:现在有一个宝石为你做这个:js-routes
问题是Sprockets在你的Rails应用程序的上下文之外评估ERB,而你期望的大多数东西都不在那里.
您可以向Sprockets上下文添加内容,如下所示:
Rails.application.assets.context_class.class_eval do
include Rails.application.routes.url_helpers
end
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但是获得需要id工作的助手却有点棘手.我将使用一种称为URI模板的技术:
var event_path = "<%= CGI.unescape event_path('{event_id}') %>";
Run Code Online (Sandbox Code Playgroud)
返回/events/{event_id}
哪个可以使用像这样的对象呈现到URL中{ event_id: 1 }
.请参阅SugarJS的String#assign方法作为此示例实现.你也可以像我一样自己动手.
归档时间: |
|
查看次数: |
13071 次 |
最近记录: |