嗨,我有一个简单的问题,我根本无法弄明白。就像标题所说,我想让我的用户控制器显示页面有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。
答案 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页面成为登录页面。对于初学者,显示什么用户?他们还没有登录。我希望这有帮助!