2 votes

Comment avoir un modèle d'URI avec une variable optionnelle avec un chemin d'accès ?

J'utilise site prism pour créer un objet page qui a une possibilité de 2 urls. Site_prism utilise Addressable::Template, et celui-ci utilise le modèle d'URI RFC 6570.

La page requise contient une liste d'éléments, mais peut aussi n'en avoir aucun, et à partir de cette logique, 2 URLs possibles sont définies.

Si la page n'a pas d'éléments, l'URL est example.com/foo Si la page comporte des éléments, elle redirige la sélection du premier vers example.com/foo/1/bar

J'essaie de créer un modèle d'url pour la page afin d'obtenir l'une des deux sorties possibles.

cas 1 : Page.new.load => example.com/foo
cas 2 : Page.new.load(id: 1) => example.com/foo/1/bar

Les solutions que j'ai obtenues jusqu'à présent sont les suivantes :
set_url '/foo{/id,path}' Page.new.load(id: 1, path: 'bar')
Cela fonctionne pour le cas 1 mais pas pour le cas 2 car il nécessite 2 variables.

set_url '/foo{/path*}' Page.new.load(path: [1, 'path'])
Là encore, cela fonctionne pour le cas 1 mais pas pour le cas 2.

Ce dont j'ai besoin, c'est d'un modèle d'uri auquel est ajouté un chemin, mais uniquement si la variable est présente. quelque chose comme : /foo{/id,path("bar")}

Une variable avec une valeur par défaut, ou un chemin qui n'est présent qu'avec une variable définie.

Merci d'avance.

0voto

Luke Hill Points 38

SitePrism a fait l'objet de nombreuses mises à jour concernant les modèles adressables, mais vous postez votre message après que tous les modèles aient été mis en place.

Avez-vous essayé avec les dernières versions de site_prism et addressable (Quelque chose après 2.12 pour site_prism et 2.5 pour addressable).

Si ce n'est pas le cas, pourriez-vous ouvrir un défaut / une demande de fonctionnalité sur Github, car cela semble être quelque chose que nous "devrions" prendre en charge. https://github.com/natritmeyer/site_prism/issues

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X