2010-03-01 4 views
1

J'essaie de rendre mes urls plus jolis et j'utilise toujours des ressources reposantes. Je comprends que vous pouvez remplacer la méthode to_param si vous objet a un nom propriété comme ceci:Ruby sur rails to_param avec plusieurs champs pour le référencement

def to_param 
    self.name 
end 

qui vous donnera l'itinéraire /: modèle /: nom. Tout cela est simple, mais je dois être capable d'avoir le même nom avec plusieurs langues différentes. Je n'ai pas été en mesure de trouver une entrée de blog sur la façon de faire cela, alors comment puis-je remplacer la méthode to_param pour me fournir une route similaire à /: model /: language /: name?

Répondre

2

Vous pouvez toujours faire:

/language/:language/model/:name 

Vous feriez cela avec les routes imbriquées:

map.resources :languages do |l| 
    l.resources :profiles 
end 

Alors votre itinéraire serait:

langauge_profile_url('spanish', @profile) 

Mais ...

En fonction de ce que vous ' Re essayant de faire, vous pourriez être mieux d'utiliser le rails i18n choses. Est-ce que les utilisateurs peuvent naviguer sur le site dans différentes langues?

+0

ok, comment je fais ça? Mon modèle est "personne", donc une personne nommée "bob" qui parle "espagnol" devrait être représentée comme/langue/espagnol/personne/bob selon cette réponse. Semble raisonnable, pouvez-vous me montrer une ressource sur la façon de faire cela? – Schneems

+0

savez-vous comment mettre en place des routes pour faire quelque chose comme ça? – Schneems

+0

@snowmaninthesun a ajouté plus de contenu. – jonnii

Questions connexes