2011-12-06 4 views
0

Je suis nouveau à ce sujet, donc je ne m'attends pas à ce que quelqu'un me dise comment le faire, juste si c'est possible. Si c'est le cas, je vais continuer à faire fondre mon cerveau avec les docs.renommer les routes dans les rails 3

On m'a demandé de changer/markets/4/articles/32 en/markets/111111/articles/999999 où 111111 est dans le champ remoteID de la table des marchés et 999999 est dans le champ remoteID des articles table.

La raison en est qu'un système externe crée les nouveaux enregistrements dans l'application RoR et insère l'ID ITS dans le champ remoteID. La prochaine fois qu'il mettra à jour l'enregistrement, il ne connaîtra pas les identifiants RoR sans créer une sorte de recherche. D'après ce que j'ai vu, cela ne peut pas être fait. Peut-être que je ne regarde pas assez fort?

Merci, Varech

+0

voulez-vous changer les _helpers_ que générer de telles URL (telles que par ex. 'market_article_path') ou les règles de correspondance? Les deux devraient être possibles. Jetez un oeil à la méthode 'to_param'. Dans votre application, vous pouvez juste faire un 'article.find_by_remoteId (params [: id])', n'est-ce pas suffisant? – riffraff

+0

riffraff, votre solution est venue à moi la nuit dernière, tout en perdant sommeil par-dessus. find_by_remoteId fonctionne en effet pour créer et mettre à jour via l'API sans débloquer avec le routage pour les personnes utilisant l'application (ou moi avoir à se tourner avec les helpers). – h8windows

Répondre

0

Il devrait être possible, il peut probablement être changé quelque chose comme:

/markets/:market_remote_id/articles/:article_remote_id 

Il sera alors disponible params[:market_remote_id] et params[:article_remote_id] dans votre contrôleur

Avez un coup d'oeil à http://guides.rubyonrails.org/routing.html#dynamic-segments pour l'histoire complète