使用用户名自定义rails url

我想复制推特个人资料页面,并提供一个用户名为“ http://www.my-app.com/username ”的url ,而我可以手动将其输入地址栏并导航到我可以的个人资料页面t链接到自定义URL。

我认为问题出在路线上 – 这是我的routes.rb中的代码

map.connect '/:username', :controller => 'users', :action => 'show' 

此外,我有Question模型,我想用自定义的URL链接到它们,如下所示:

http://www.my-app.com/username/question/answer/2210

你的路线没什么不对。 在定义所有其他路线之后,请记住最后定义它。 我还建议使用RESTful路由,并且只有当您希望看到更好看的URL时才使用命名路由。 不要使用map.connect 。 这里有一些关于Rails路线的好读物 。

这是这样的:

 map.resources :questions, :path_prefix => '/:username' do |question| question.resources :answers end map.resources :users map.user '/:username', :controller => 'users', :action => 'show' 

只是你可以扩展的草案。

要创建URL,您需要为您的用户模型定义to_param方法( 请在此处阅读 )。

 class User < ActiveRecord::Base def to_param username end end 

我知道这个问题已经过时了,但它会对某人产生帮助。

你可以尝试以下。 我已经在rails 4项目中使用它,所有这些似乎都很有效。 as: :admin的原因是我在这个范围之外还有一个resources posts 。 它将为辅助调用添加一个admin ,例如admin_posts_path

 scope ":username", module: 'admin', as: :admin do get '', to: 'profiles#show' resources :posts end 

我这样用过

在视图部分

portfolio.user.name,:id => portfolio)%>

并在rout.rb中

map.show_portfolio“portfolio /:username”,:action =>’show_portfolio’,: controller =>’portfolio’