JST未定义为rails 3.1应用程序

kel*_*unn 11 ruby-on-rails asset-pipeline

关于资产管道和javascript模板的大多数rails 3.1教程让我相信资产管道会获取任何*.jst文件并将它们打成一个可用于*.js文件的JST变量.但是,当我尝试加载*.jst模板时,我当前难以处理以下错误:

Uncaught ReferenceError: JST is not defined

有什么指针吗?

wha*_*ird 23

如果您使用的是需求行

// = require_tree ../templates

确保该行位于包含任何文件的行上方.


kel*_*unn 7

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

//= require templates/your_template.jst

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

- content_for :javascripts do
  = javascript_include_tag "templates/your_template"
Run Code Online (Sandbox Code Playgroud)

  • 为什么你需要在清单中使用templates/your_template.jst,然后在同一个文件中使用javascript_include_tag?当你在application.js清单中需要your_template.jst时,你只需要`javascript_include_tag'application'`这是默认完成的. (2认同)

tyb*_*103 7

所有其他答案都是在这个,但澄清......

除非清单中需要一个或多个.jst文件,否则链接器不定义JST.

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

另外一定要包括EJS宝石.如果你已经包含了rails-on-rails,那么你已经拥有了它.