【问题标题】:myapp.com/@username url in rails routes轨道路线中的 myapp.com/@username 网址
【发布时间】:2011-05-01 16:14:55
【问题描述】:

您好,我有一个简单的 rails 问题,我根本无法弄清楚。就像标题说的那样,我想让我的用户控制器显示页面有 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这是一个rails 2.3.8应用程序。

【问题讨论】:

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


    【解决方案1】:

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

    map.resources :users
    

    现在您将拥有像user_path(@user) 这样的命名良好的路由来显示用户页面,等等。如果你不想要安静的路由,你也可以只创建一个命名路由:

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

    user_path(@user) 也可以。

    顺便说一下,您上面的登录示例不正确。首先,":login" 被路由引擎解释为一个变量,但它没有被使用。此外,您不希望 users#show 页面成为登录页面。首先,显示什么用户?他们还没有登录。我希望这会有所帮助!

    【讨论】:

    • 是的,我了解如何设置路线。我正在尝试设置特定路线,您告诉我要做的事情会给我以下网址:
    • myapp.com/@username。你告诉我的给了你 myapp.com/users/@username,这不是我要找的。​​span>
    • 对不起,我不明白你的目的——尤其是你之前的 ":login" 参数。另一个答案看起来是对的。
    • 我很抱歉,这是我的错,我从我的应用程序中复制和粘贴,该应用程序实际上使用“登录”作为数据库中的用户名,但是当我将它们更改为更易读的格式。对不起!
    【解决方案2】:

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

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

    我的全部大写以突出您需要更改的内容。现在可以拨打user_path(:username =&gt; @user.username)

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多