Emberjs:使用带 Pod 结构的 Slug
Emberjs: Using Slugs With Pod Structure
我在 pod 结构中使用 slug 时遇到困难。特别是当我尝试直接转到列表页面时,它不起作用。 Slug 是模型中的计算 属性。
ember-v:
版本:1.13.1,
节点:0.12.7,
npm:2.12.1,
app/listings/show/route.js
export default Ember.Route.extend({
model(params) {
console.log('MODEL params.pageslug', params.page_slug);
var listings = this.modelFor('listings');
return listings.findBy('slug', params.page_slug);
},
serialize(model, params) {
console.log('SERIALIZE model slug', model.get('slug'));
return { page_slug: model.get('slug') };
}
});
app/router.js
Router.map(function() {
this.route('listings', function() {
this.route('show', { path: ':page_slug' });
});
});
当我直接转到 /listings/slug 时,我没有看到任何控制台日志。 Ember 给出 Preparing to transition from '' to ' not-found'
Transitioned into 'not-found'
(未找到是我们的 404 路由)
当我直接转到 /listings/listing_id 时(即:/listings/1),我看到我的模型日志 params.page_slug 为“1”,并且加载了正确的页面但没有任何模型属性。 Ember 给出 Preparing to transition from '' to ' listings.show'
Transitioned into 'listings.show'
如果我转到 /listings 然后单击列表,我的 SERIALIZE 日志会显示正确的 slug 值,但没有模型日志。所以它似乎跳过了我的 model() 函数(我假设是因为模型已经从 /listings 中给出)
我觉得我误解了一些简单的东西。
所以发生了什么,ember 正在向我的 rails 后端发送带有查询 slug 参数的请求。但是接收调用的 rails 方法没有处理向它发送参数时的情况。所以我在我的 rails 控制器中需要这个:
def index
if params[:slug]
@listing = Listing.find_by_slug(params[:slug])
else
...other stuff
end
end
我在 pod 结构中使用 slug 时遇到困难。特别是当我尝试直接转到列表页面时,它不起作用。 Slug 是模型中的计算 属性。
ember-v: 版本:1.13.1, 节点:0.12.7, npm:2.12.1,
app/listings/show/route.js
export default Ember.Route.extend({
model(params) {
console.log('MODEL params.pageslug', params.page_slug);
var listings = this.modelFor('listings');
return listings.findBy('slug', params.page_slug);
},
serialize(model, params) {
console.log('SERIALIZE model slug', model.get('slug'));
return { page_slug: model.get('slug') };
}
});
app/router.js
Router.map(function() {
this.route('listings', function() {
this.route('show', { path: ':page_slug' });
});
});
当我直接转到 /listings/slug 时,我没有看到任何控制台日志。 Ember 给出 Preparing to transition from '' to ' not-found'
Transitioned into 'not-found'
(未找到是我们的 404 路由)
当我直接转到 /listings/listing_id 时(即:/listings/1),我看到我的模型日志 params.page_slug 为“1”,并且加载了正确的页面但没有任何模型属性。 Ember 给出 Preparing to transition from '' to ' listings.show'
Transitioned into 'listings.show'
如果我转到 /listings 然后单击列表,我的 SERIALIZE 日志会显示正确的 slug 值,但没有模型日志。所以它似乎跳过了我的 model() 函数(我假设是因为模型已经从 /listings 中给出)
我觉得我误解了一些简单的东西。
所以发生了什么,ember 正在向我的 rails 后端发送带有查询 slug 参数的请求。但是接收调用的 rails 方法没有处理向它发送参数时的情况。所以我在我的 rails 控制器中需要这个:
def index
if params[:slug]
@listing = Listing.find_by_slug(params[:slug])
else
...other stuff
end
end