gpt4 book ai didi

javascript - Assets 管道中的路由助手

转载 作者:IT王子 更新时间:2023-10-29 03:01:03 28 4
gpt4 key购买 nike

使用 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)")

知道如何访问其中的路由助手吗?

最佳答案

更新:现在有一个 gem 可以为您执行此操作:js-routes


问题在于,Sprockets 正在您的 Rails 应用程序上下文之外评估 ERB,而您期望的大部分内容并不存在。

您可以像这样向 Sprockets 上下文添加内容:

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

这一切都很好,但是让需要 id 的助手工作有点棘手。我将使用一种称为 URI Template 的技术:

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

它返回 /events/{event_id},您可以使用 { event_id: 1 } 之类的对象将其渲染到 url 中。参见 SugarJS 的 String#assign方法作为示例实现。你也可以roll your own就像我一样。

关于javascript - Assets 管道中的路由助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com