Ruby on rails 未定义rails 3.1应用程序的JST

Ruby on rails 未定义rails 3.1应用程序的JST,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,大多数关于资源管道和javascript模板的rails 3.1教程都让我相信,资源管道将拾取任何*.jst文件,并将它们放入可用于*.js文件的jst变量中。但是,当我尝试加载*.jst模板时,我当前遇到以下错误: 未捕获引用错误:未定义JST 有任何指针吗?如果您在app/assets/application.js文件中正确地包含javascript模板项,那么JST变量似乎已设置,以便可以通过资产管道包含: //=需要模板/your_template.jst 然后在相应的rails

大多数关于资源管道和javascript模板的rails 3.1教程都让我相信,资源管道将拾取任何*.jst文件,并将它们放入可用于*.js文件的jst变量中。但是,当我尝试加载*.jst模板时,我当前遇到以下错误:


未捕获引用错误:未定义JST


有任何指针吗?

如果您在
app/assets/application.js
文件中正确地包含javascript模板项,那么JST变量似乎已设置,以便可以通过资产管道包含:


//=需要模板/your_template.jst

然后在相应的rails视图中包含javascript模板(使用haml):


听起来您需要EJS Gem,如果您使用rails主干Gem,它就会包含在内

然后您只需创建一个类似app/asset/javascripts/foobar.jst.ejs的文件,就可以通过调用

JST['foobar']()


希望这能回答您的问题。

如果您使用的是require行,如

//=需要树../templates


确保这一行在包含给出错误的任何文件的那一行上方。

所有其他答案都是针对这一点的,但为了澄清

JST不是由链轮定义的,除非清单中需要一个或多个.JST文件。

因此,即使您的清单中有
/=require_tree../templates
,在您在templates目录中创建至少一个.JST文件之前,JST仍然是未定义的


还要确保包括ejsgem。如果您已经在rails上包含了主干,那么您已经拥有了它。

看来JST与主干或下划线无关,它是由后端完成的,将在前端页面中生成JST对象和JST函数。

谢谢。你的答案正是我想要的。顺便说一句,如果有人对路径有问题,你可以在控制台中检查JST对象,它会列出所有已知的模板。这正是问题所在。您需要一些文件,比如templates/dummy.jst.ejsw为什么需要在清单中使用templates/your_template.jst,然后在同一个文件上使用javascript_include_标记?当您需要application.js清单中的\u template.jst时,您只需
javascript\u包含\u标记“application”
,这是默认情况下完成的。
- content_for :javascripts do
  = javascript_include_tag "templates/your_template"