2017-10-15 1 views
-1

Ich habe eine Anwendung mit FriendlyID. Ich habe derzeit zwei Modelle, Katzen und Dienstleistungen, die Ich mag würde von diesem drehen:Rails Friendly ID Routen

/cats/some-category 
/services/a-service 

in:

/some-category 
/a-service 

Ich habe Routing zur Zeit für jeden wie folgt aus:

resources :cats 
resources :services 

Ich möchte die Admin-Funktionalität auf dem Back-End beibehalten und NUR die Routen auf dem Front-End ändern.

Ich habe versucht, mit ...

:path => '' 

... aber es vermasselt das Back-End-Routing im Admin-up.

Gedanken?

+0

Wenn Sie eine solche Route wollen, dann ist es schwierig, Identifizieren Sie, welches Objekt abgerufen werden soll. – krishnar

Antwort

2

der Hauptgrund, warum Sie nicht

/cats/some-category 
/services/a-service 

in

/some-category 
/a-service 

ist aufgrund einiger klar Routing-Probleme machen kann. Ihr größtes Problem ist natürlich die Tatsache, dass Katzen und Dienstleistungen beide von verschiedenen Controllern gehandhabt werden und es keine Möglichkeit gibt, beide Controller unter einer Route zu mischen.

, wenn Sie diese Arbeit machen möchten, sollten Sie einen neuen Controller zuerst machen, sagen FriendlyController

FriendlyController

und in Ihrem routes.rb tun so etwas wie dieses

get '/:id' => 'friendly#index' 

Obwohl dies funktionieren würde, notieren Sie, warum dies ist aus einer langfristigen Perspektive eine schlechte Idee.

  1. zunächst, dies würde später eine Menge möglicher Weg zu Konflikten führen, wenn das Projekt wächst als Schienen nicht in der Lage sein würde, richtig zu beurteilen, welche Route zu bestimmten Anlässen zu holen.

  2. Wie werden Sie mit Katzen und Dienstleistungen mit der gleichen freundlichen ID umgehen?


Wenn Sie wirklich den Schwerpunkt auf die freundliche ID anstelle des Controllers setzen möchten, können Sie verkürzen nur die URLs wie so

resources :cats, as: 'c'