2013-03-07 4 views
1

Actuellement, je quelque chose comme ceci:routes Mise à niveau dans Rails 3

resources :books do 
    collection do 
     get 'search' 
    end 
    end 

et mon nom de contrôleur est également « livres » et j'ai une méthode d'action appelée « recherche » à l'intérieur

Je voudrais cette partie "get search" est aussi une ressource, un peu comme des ressources imbriquées ... mais je ne veux pas casser les codes d'autres peuples qui utilisent l'itinéraire actuel que cela génère, donc je dois le mettre à jour de manière passive !

+0

Do vous voulez quelque chose comme 'books/1/recherches/1'? Quelles actions voulez-vous que la ressource 'recherches' puisse faire? Vous devez être un peu plus clair sur ce que les nouveaux chemins devraient ressembler. – varatis

+0

Je veux qu'il soit "passif" donc quel que soit le chemin que l'ancienne route génère, je veux que le nouveau génère le même – Bohn

Répondre

0

Utiliser des itinéraires peu profondes qui nichent comme:

resources :books , :shallow => true do 
    resources :searches 
end 

Maintenant, vous obtiendrez les routes suivantes:

/books/1 => books_path(1) 
/books/1/searches => books_searches_index_path(1) 
/searches/2 => searches_path(2) 

De même, vous pouvez obtenir un routage pour les itinéraires définis comme:

get '(:books)/searches', :to => 'books#index' 
1
resources :books do 
    collection do 
    get 'search' 
    end 
    resources :searches 
end 

... Si je vous comprends bien, cela devrait être ce que vous voulez. Il ne cassera pas d'autres routes, il suffit d'en ajouter de nouvelles.


Run rake routes pour vous assurer d'avoir toutes les routes que vous voulez/besoin.

+0

qu'est-ce que "ressources: recherches" à la fin pour? – Bohn

+1

Vous avez dit que vous vouliez ajouter une ressource pour les recherches. Cela ferait des routes comme 'books/1/recherches' et' books/3/recherches/edit', etc. – varatis

+0

Je ne sais pas vraiment de quel genre de routes vous avez besoin. Ce que vous avez déjà ne va pas casser le code de quelqu'un d'autre. Pouvez-vous donner un exemple de nouvelles routes dont vous avez besoin, si vous en avez besoin? – varatis