J'ai un modèle d'utilisateur et un modèle de profil.Question d'URL amicale, avec un Twist
user has_one :profile
profile belongs_to :user
En raison de cette relation, je tire mes profils en appelant l'ID utilisateur. Donc, mes URL ressemblent à ceci: website.com/users/[user_id]/profile
Je ne suis pas sûr s'il y a une solution à mon problème. Le voici: Je voudrais afficher des URL conviviales SEO. Je cherche à utiliser friendly_id
pour cela. Mais, nos profils sont pour les entreprises, et c'est le nom de l'entreprise que nous voulons mettre dans l'url. Le problème est que notre modèle d'utilisateur ne demande pas intentionnellement le nom de l'entreprise, et c'est le user_id
qui s'affiche actuellement dans l'URL.
Existe-t-il un moyen d'extraire le nom de l'entreprise du modèle de profil (à savoir @ profile.name) et de l'utiliser pour remplir la partie [user_id] de l'URL? MISE À JOUR: J'ai configuré la gemme friendly_id et il me semble que cela pourrait fonctionner. Dans mon modèle de profil, j'ai ceci: has_friendly_id :name, :use_slug => true
Quand je mis à jour un profil, friendly_id
a fait slugify l'url en mettant le nom commercial du profil dans la user_id
partie de l'URL. Mais, bien sûr, cela a créé une exception. Par conséquent, si le nom de l'entreprise dans le modèle de profil est Mike's Bar, l'URL indique maintenant/users/mike-s-bar/profile. L'exception dit ceci: Impossible de trouver l'utilisateur ID=mike-s-bar.
Voici mon contrôleur de profils:
def show
@user = User.find(:all)
@profile = User.find(params[:user_id])
end
est-il un moyen de faire ce travail?
Je seconde, mais ajouterait un appel à paramétrez:
Vous voulez garder le