2010-02-16 38 views
11

我要复制的Twitter个人资料页面,并有一个用户名“http://www.my-app.com/username”一个URL,而我可以手动键入该到地址栏并导航到个人资料页,我不能链接到自定义网址。定制轨网址与用户名

我认为这个问题是在路线 - 这里是我的routes.rb中的代码

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

另外,我有QuestionAnswer模型,我想,像这样的自定义URL链接到他们:

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

+0

你不需要更好地构架它,只是更简洁 – 2010-02-16 00:29:21

回答

12

有什么不对您的路线。只要记住在定义所有其他路线后最后定义它。我还建议使用RESTful路由,并且只有当您希望更好看的URL使用命名路由时。请勿使用map.connect。这里有一些good reading about Rails routes

这里是如何可以看:

map.resources :questions, :path_prefix => '/:username' do |question| 
    question.resources :answers 
end 

map.resources :users 

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

只是一个草案,可以延长。

4

要创建你需要定义你的用户模型(read hereto_param方法的URL。

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

我已经使用这样

在View部分

portfolio.user.name,:ID =>图集)%>

和rout.rb

地图。 show_portfolio“组合/:用户名”,:动作=>“show_portfolio”,:控制器=>“组合”

1

我知道这个问题是旧的,但它会帮助使meone。

你可以尝试以下。我用它在一个rails 4项目中,并且所有这些似乎都很棒。究其原因,是as: :admin我也有一个resources posts超出这个范围。它将在助手呼叫中添加admin,例如admin_posts_path

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