2015-03-29 1 views
0

J'essaie de configurer des URL de slug personnalisées pour mes modèles de page dans Ember. Ils travaillent jusqu'à présent quand j'appelle les liens de la page d'index. Ce qui ne fonctionne pas cependant, c'est que si j'actualise la page avec une de mes URLs personnalisées, le modèle n'est plus trouvé et je suis redirigé vers ma page "non trouvé". Alors peut-être que c'est un problème de "timing" et que je devrais charger les modèles différemment?Ember.js: les URL Slug personnalisées ne fonctionnent pas après l'actualisation

J'ai suivi le tutorial in the Ember guides et vérifié this question on StackOverflow mais je n'arrive toujours pas à le faire fonctionner.

Voici mon extrait de code source jusqu'à présent: http://emberjs.jsbin.com/hidefetido/1/

Merci beaucoup à l'avance - chaque aide/commentaire est apprécié.

Répondre

1

D'abord, vous devez faire fonctionner votre modèle pour gérer limace et la fonction sérialisation à Tranform modèle dans url:

export default Ember.Route.extend({ 
    model: function (params) { 
    return this.store.findAsId('company', 'slug', params.company_slug); 
    }, 
    serialize: function (model) { 
    return {company_slug: model.get('slug')}; 
    } 
}); 

La deuxième partie est facultative. Il y a généralement un problème avec le serveur: Si vous appelez pour /entity/slug, les données penseront que slug est id. Donc, vous devez utiliser this.store.find('company', {slug:slug}); mais cela retournera tableau donc vous devez le transformer. Cela peut être simplifié en implémentant sa propre fonction dans le magasin. Un exemple de store.js est le gist.

+0

Cela fonctionne comme ça, merci beaucoup! Encore bizarre que ça doit être une solution tellement compliquée et qu'il n'y a pas de documentation claire à ce sujet ... – HerrHerrmann

+0

Je suis d'accord. Btw je n'étais pas capable de déterminer pourquoi votre code ne fonctionne pas hier. Mais maintenant j'ai une idée. Vous utilisez '' 'return this.modelFor ('pages'). FindBy ('slug', params.page_slug);' '' pour obtenir la page. Mais cela nécessite que '' 'PagesRoute''' soit chargé. Mais en fonction de vos rotes, je ne crois pas que ce sera sur le rechargement de la page. – Keo