我刚开始学习ember.js,我正在尝试将其集成到现有的rails应用程序中。我正在使用ember-rails gem,除了在rails视图中调用{{outlet}}
时我的模板没有显示时,一切看起来都不错。这是我的代码的样子。
Rails查看我希望我的ember应用程序在哪里
<script type="text/x-handlebars" data-template-name="application">
<h1>test</h1>
{{outlet}}
</script>
<div id="ember-root">
这是我的余烬应用代码:
window.Resumecompanion = Ember.Application.create({
LOG_TRANSITIONS: true, // basic logging of successful transitions
LOG_TRANSITIONS_INTERNAL: true, // detailed logging of all routing steps
rootElement: '#ember-root'
});
Resumecompanion.Router.reopen({});
Resumecompanion.JobsRoute = Ember.Route.extend({})
Resumecompanion.Router.map(function() {
this.resource('jobs');
});
最后,车把模板位于app / assets / javascripts / templates / jobs.handlebars
<h1>Jobs</h1>
<p>Your content here.</p>
{{outlet}}
当我运行应用程序时,jobs.hanldebars中的模板不会显示。在控制台中我看到了:
尝试将URL转换为/ jobs
转换#0:应用程序:调用beforeModel hook
转换#0:应用程序:调用deserialize hook
转换#0:应用程序:调用afterModel hook
转换#0:作业:调用beforeModel hook
转换#0:作业:调用反序列化挂钩
转换#0:作业:调用afterModel hook
转换#0:解决了目的地路线上的所有模型;最终确定过渡。
过渡到&#39;工作&#39;
转换#0:转换完成。
Ember Debugger Active
所以我认为它实际上是路由到&#39;工作&#39;但我不知道为什么模板似乎没有渲染和显示。任何帮助表示赞赏。
经过多次游戏后,我发现如果我在rails视图中声明了这个
<script type="text/x-handlebars" data-template-name="jobs">
<h1>Jobs</h1>
{{outlet}}
</script>
然后它呈现此模板并正确显示。那么也许我在模板中没有注意到一个命名问题?
谢谢,
约什
答案 0 :(得分:0)
在路由器中定义路由或资源时,它还需要引用您的模板。如果您没有该名称的模板,则无需呈现任何内容。所以你的假设是正确的,你需要一个“工作”模板来帮助你的路由器代码。
如果您有兴趣,这里有关于路线和资源之间差异的好文章。
http://blog.trackets.com/2013/02/01/ember-dot-js-router-and-template-naming-convention.html