2010-10-28 48 views
2

嗨我有一个简单的轨道问题,我根本无法弄清楚。像标题所说,我想让我的用户控制器显示页面具有myapp.com/@username url,但我不知道如何执行此操作。我对路线的了解必须从根本上有缺陷。myapp.com/@username在轨道路线的URL

我的链接现在通常是这样的:

<%= 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这是一个轨道2.3.8应用程序。

回答

3

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

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

从我全部大写以突出你需要改变什么。现在你可以拨打user_path(:username => @user.username)

0

在你的路由文件,你需要设置的资源:

map.resources :users 

现在你将有很好的命名路由喜欢user_path(@user)显示用户页面,等等。如果你不希望宁静的路线,你也可以只创建一个单一命名的路线:

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

而且user_path(@user)也能发挥作用。

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

+0

是的,我明白如何设置路线。我试图设置一个特定的路线,你告诉我要做的事情将给我的网址为: – goddamnyouryan 2010-10-28 04:42:00

+0

myapp.com/@username。你告诉我给你myapp.com/users/@username,这不是我正在寻找的。 – goddamnyouryan 2010-10-28 05:14:29

+0

对不起,我不明白你要做什么 - 尤其是使用你以前的“:login”参数。另一个答案看起来是正确的。 – 2010-10-28 15:16:52