作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无法为单个项目创建可点击的链接:
router.js:
Router.route('/projects/:_id', {
name: 'projectPage',
template: 'projectPage',
data: function() {
return Projects.findOne({ _id: this.params._id })
}
})
project_list.html:
<template name="projectList">
<div class="col-md-10">
<div class="row">
<h2 class="page-header">My Lessons</h2>
{{#each projects}}
{{> project}}
{{/each}}
</div>
</div>
</template>
project.html:
<template name="project">
<div class="col-md-4">
<div class="thumbnail">
<img src="thumb-1.png" alt="...">
<div class="caption">
<h3>{{title}}</h3>
<p>{{description}}</p>
<p><a href="{{pathFor 'projectPage'}}" class="btn btn-primary" role="button">Check out</a></p>
</div>
</div>
</div>
</template>
project_page.html:
<template name="projectPage">
<div class="col-md-10">
<div class="row">
<h2 class="page-header">{{title}}</h2>
<h2 class="page-header">{{description}}</h2>
</div>
</div>
</template>
我得到这个奇怪的 URL:http://localhost:3000/projects/ObjectID(%22566b810371d07711cf9d6680%22)
我被带到 projectPage
但什么也没有显示。
我做错了什么?
最佳答案
问题是 iron router 在您项目的 _id
中看到一个 ObjectID
,它希望在其中找到一个 String
。您可以改用以下代码,即时将您的 ObjectID 转换为字符串:
project.html:
<template name="project">
<div class="col-md-4">
<div class="thumbnail">
<img src="thumb-1.png" alt="...">
<div class="caption">
<h3>{{title}}</h3>
<p>{{description}}</p>
<p><a href="{{pathFor 'projectPage' _id=this._id.toHexString}}" class="btn btn-primary" role="button">Check out</a></p>
</div>
</div>
</div>
</template>
但随后您必须在您的 route 将其转换回 ObjectID:
router.js:
Router.route('/projects/:_id', {
name: 'projectPage',
template: 'projectPage',
data: function() {
return Projects.findOne({ _id: new Meteor.Collection.ObjectID(this.params._id) })
}
})
关于javascript - 如何让pathFor根据this.params._id创建URL路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290459/
我是一名优秀的程序员,十分优秀!