rails路由中的myapp.com/@username url

时间:2010-10-28 03:58:58

标签: ruby-on-rails routing social-networking

嗨,我有一个简单的问题,我根本无法弄明白。就像标题所说,我想让我的用户控制器显示页面有myapp.com/@username网址,但我不知道如何做到这一点。我对路线的了解必然存在根本缺陷。

我的链接现在通常如下所示:

<%= link_to "#{@user.username}", :controller => "users", :action => "show", :username => @user.username %>
显然,这并不理想。我希望他们看起来像这样。

<%= link_to "#{@user.username}", user_path(@user) %>

但我不知道该怎么做。嵌套路线似乎不是这样的。

我的路线设置如下:

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

但这似乎只允许我做我现在做的事情,不让我实际穿过那里。有什么建议? PS这是一个rails 2.3.8 app。

2 个答案:

答案 0 :(得分:3)

你的路线是正确的,但你没有给它起一个名字:

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

我所有人都要强调你需要改变什么。现在您可以致电user_path(:username => @user.username)

答案 1 :(得分:0)

在路线文件中,您需要设置资源:

map.resources :users

现在,您将拥有像user_path(@user)这样漂亮的命名路线来显示用户页面,依此类推。如果您不想要休息路线,您也可以创建一个命名路线:

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

user_path(@user)也可以。

顺便说一句,上面的登录示例不正确。首先,路由引擎将“:login”解释为变量,但它没有被使用。此外,您不希望用户#show页面成为登录页面。对于初学者,显示什么用户?他们还没有登录。我希望这有帮助!