【问题标题】:Emberjs: Using Slugs With Pod StructureEmberjs:使用带有 Pod 结构的 Slugs
【发布时间】:2015-11-08 19:50:36
【问题描述】:

我在使用带有 pod 结构的 slug 时遇到了困难。特别是当我尝试直接进入列表页面时,它不起作用。 Slug 是模型中的计算属性。

余烬-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),我看到我的 MODEL 日志 params.page_slug 为“1”,并且加载了正确的页面而没有任何模型属性。 Ember 给 Preparing to transition from '' to ' listings.show' Transitioned into 'listings.show'

如果我要转到 /listings 然后单击一个列表,我的 SERIALIZE 日志将显示正确的 slug 值,但没有模型日志。所以它似乎跳过了我的 model() 函数(我假设是因为模型已经从 /listings 给出)

我觉得我在这里误解了一些简单的东西。

【问题讨论】:

  • 做更多的工作,模型函数中的 findBy() 返回 undefined。

标签: ember.js ember-cli slug


【解决方案1】:

所以发生了什么,是 ember 正在向我的 rails 后端发送一个带有查询 slug 参数的请求。但是接收调用的 rails 方法并没有处理向它发送参数时的情况。所以我在我的 rails 控制器中需要这个:

def index
    if params[:slug]
        @listing = Listing.find_by_slug(params[:slug])
    else
        ...other stuff
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 2018-04-29
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2015-08-15
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多