简体   繁体   English

基本的Ember模板不在Rails中渲染

[英]Basic Ember Template Not Rendering in Rails

Forgive me, for I am new to Ember (and the Javascript world as a whole for that matter). 原谅我,因为我是Ember的新手(就此而言,整个Java世界都是如此)。 I have a rails application created with the ember-rails gem, we'll call it 'warthog' 我有一个用ember-rails gem创建的rails应用程序,我们将其称为“ warthog”

My application.js file is as follows: 我的application.js文件如下:

//= require jquery
//= require jquery_ujs
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require warthog
Warthog = Ember.Application.create();
//= require bootstrap

Next is application.html.haml file 接下来是application.html.haml文件

%html
  %head
    %title Warthog
    = stylesheet_link_tag    "application", :media => "all"
    = javascript_include_tag "application"
    = javascript_include_tag 'templates/application'

For some test output, I have a string in my application.handlebars file 对于一些测试输出,我的application.handlebars文件中有一个字符串

This is a test

The problem is that javascripts/templates/application.handlebars does not get rendered. 问题在于javascripts/templates/application.handlebars无法呈现。

Here is page source after the request is completed: 请求完成后,这是页面源:

<html>
  <head>
    <title>Warthog</title>
    <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
    <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
    <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
    <script src="/assets/handlebars.js?body=1" type="text/javascript"></script>
    <script src="/assets/ember.js?body=1" type="text/javascript"></script>
    <script src="/assets/ember-data.js?body=1" type="text/javascript"></script>
    <script src="/assets/application.js?body=1" type="text/javascript"></script>
    <script src="/assets/store.js?body=1" type="text/javascript"></script>
    <script src="/assets/controllers/application_controller.js?body=1" type="text/javascript"></script>
    <script src="/assets/templates/application.js?body=1" type="text/javascript"></script>
    <script src="/assets/routes/application_routes.js?body=1" type="text/javascript"></script>
    <script src="/assets/router.js?body=1" type="text/javascript"></script>
    <script src="/assets/warthog.js?body=1" type="text/javascript"></script>
    <script src="/assets/templates/application.js?body=1" type="text/javascript"></script>
    <script src="//www.google.com/jsapi" type="text/javascript"></script>
    <script src="/assets/chartkick.js?body=1" type="text/javascript"></script>
    <meta content="authenticity_token" name="csrf-param" />
    <meta content="afE+P0e6I/KDeVpg/kLi8RvsPAAyYOwD6rE=" name="csrf-token" />
  </head>
  <body>
    <div id='container'>

    </div>
</body>
</html>

And the console log 和控制台日志

DEBUG: ------------------------------- ember.js?body=1:394
DEBUG: Ember.VERSION : 1.0.0 ember.js?body=1:394
DEBUG: Handlebars.VERSION : 1.0.0 ember.js?body=1:394
DEBUG: jQuery.VERSION : 1.10.0 ember.js?body=1:394
DEBUG: ------------------------------- ember.js?body=1:394
Assertion failed: The view helper only takes a single argument ember.js?body=1:394
(anonymous function) ember.js?body=1:394
Ember.assert ember.js?body=1:53
(anonymous function) ember.js?body=1:25789
anonymous application.js?body=1:10
(anonymous function) handlebars.js?body=1:2214
Ember.View.Ember.CoreView.extend.render ember.js?body=1:20335
Ember.CoreView.Ember.Object.extend._renderToBuffer ember.js?body=1:19272
Ember.View.Ember.CoreView.extend._renderToBuffer ember.js?body=1:20915
superWrapper ember.js?body=1:1218
(anonymous function) ember.js?body=1:19253
Ember.Instrumentation.instrument ember.js?body=1:1662
Ember.CoreView.Ember.Object.extend.renderToBuffer ember.js?body=1:19252
Ember.View.Ember.CoreView.extend.createElement ember.js?body=1:20737
Ember.merge.insertElement ember.js?body=1:21686
Ember.View.Ember.CoreView.extend._insertElement ember.js?body=1:20665
DeferredActionQueues.flush ember.js?body=1:5459
Backburner.end ember.js?body=1:5545
Backburner.run ember.js?body=1:5584
Ember.run ember.js?body=1:5915
(anonymous function) ember.js?body=1:34656
fire jquery.js?body=1:3065
self.fireWith jquery.js?body=1:3177
jQuery.extend.ready jquery.js?body=1:434
completed jquery.js?body=1:105
Uncaught TypeError: Cannot read property '0' of undefined ember.js?body=1:25589
EmberHandlebars.ViewHelper.Ember.Object.create.helper ember.js?body=1:25589
(anonymous function) ember.js?body=1:25797
anonymous application.js?body=1:10
(anonymous function) handlebars.js?body=1:2214
Ember.View.Ember.CoreView.extend.render ember.js?body=1:20335
Ember.CoreView.Ember.Object.extend._renderToBuffer ember.js?body=1:19272
Ember.View.Ember.CoreView.extend._renderToBuffer ember.js?body=1:20915
superWrapper ember.js?body=1:1218
(anonymous function) ember.js?body=1:19253
Ember.Instrumentation.instrument ember.js?body=1:1662
Ember.CoreView.Ember.Object.extend.renderToBuffer ember.js?body=1:19252
Ember.View.Ember.CoreView.extend.createElement ember.js?body=1:20737
Ember.merge.insertElement ember.js?body=1:21686
Ember.View.Ember.CoreView.extend._insertElement ember.js?body=1:20665
DeferredActionQueues.flush ember.js?body=1:5459
Backburner.end ember.js?body=1:5545
Backburner.run ember.js?body=1:5584
Ember.run ember.js?body=1:5915
(anonymous function) ember.js?body=1:34656
fire jquery.js?body=1:3065
self.fireWith jquery.js?body=1:3177
jQuery.extend.ready jquery.js?body=1:434
completed jquery.js?body=1:105

RESOLUTION: The error was in my controller and routes files within Ember; 解决方案:错误出在我的控制器中,并且在Ember中路由文件; I deleted those and now the page renders 我删除了这些,现在页面呈现

Make sure your application handlebars template is being injected in this format 确保以这种格式注入应用程序把手模板

<script type="text/x-handlebars" data-template-name="application">

</script>

or 要么

<script type="text/x-handlebars" >

</script>

Naming is super important in Ember, if your template is getting injected with a different name, like: 如果您要为模板注入其他名称,则命名在Ember中非常重要,例如:

<script type="text/x-handlebars" data-template-name="templates/application">

</script>

Then you'd need an application view that says to use a different template name than the default template name. 然后,您需要一个应用程序视图,该视图要求使用与默认模板名称不同的模板名称。

Warthog.ApplicationView = Ember.View.extend({
  templateName: 'templates/application'
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM