2010-12-02 13 views
3

J'ai un dossier de vue product_types. Le nom du fichier du contrôleur est product_types_controller et la classe que j'ai est ProductTypesController. Je garde normalement le format _ que les rails préfèrent, mais je dois garder la syntaxe de la page en cours pour des raisons d'index de recherche.Utilisation de tirets pour les URL en rubis sur les rails

Comment puis-je faire apparaître ce contrôleur pour que monsite.com/product-types et toutes les pages du dossier product_types apparaissent pour mysite.com/product-types/some-page? Ai-je besoin de nommer les pages avec - ou devrais-je utiliser la syntaxe _ et juste changer les routes.

Ceci est pour un site Rails 2.3.8.

Merci

Répondre

2

Si vous utilisez des itinéraires RESTful, vous pouvez le faire:

map.resources :product_types, :as => 'product-types' 

J'espère que cela aide!

+0

dois-je nommer les fichiers en utilisant vue underscores ou tirets si bar_of_soap ou bar de savon. Surtout dans le contrôleur, je ne peux que def bar_of_soap pas de barre de savon donc il a du mal à voir l'action. Pensées? – Splashlin

+0

Bien sûr, tout dans les coulisses reste le même. Les noms de dossier et de fichier seront toujours soulignés. La seule mention des tirets est dans le fichier routes. –

+0

Cela ne fonctionne pas sur Rails 3 - vous vous retrouvez avec une erreur de syntaxe de la part des helpers de l'url: 'erreur de syntaxe, inattendue '-', attendu ';' ou '\ n' ... sh_for_manage_product_discount-codes_url (options = nil) ' –

6

Pour Rails 3, vous devez le faire différemment:

resources "product-types", :as => :product_types, :controller => :product_types 
1

Rails 3, vous pouvez faire:

resources :product_types, :path => '/product-types' 
4

Si vous utilisez dans vos espaces de noms routes dans Rails 3, vous peut utiliser les éléments suivants pour des tirets dans urls:

namespace :product_types, :path => "product-types" do 
+0

Ceci est la même que la réponse acceptée. –

+1

Je ne pense pas que ce soit la même chose que la réponse acceptée. Cette réponse m'a aidé. +1 – peter