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