1

好的,我有一个非常简单的问题,我无法解决。我有一个链接,我通过 rails 3 应用程序中的以下 ruby​​ 代码向我的用户显示:-

<%= link_to linkbunch_url(@link.link), linkbunch_url(@link.link) %>

这是打印这样的网址:-

http://localhost:3000/linkbunches/7yae8t

现在我不希望这个“linkbunches”成为我的网址的一部分。所以我更改了我的 routes.rb 文件并定义了如下路径:-

match "/:id" => "linkbunches#show"

因此,当我将 url 从更改为时http://localhost:3000/linkbunches/7yae8thttp://localhost:3000/7yae8t它会将我带到同一页面。完全没有问题。但我不明白如何实际更改 ruby​​ 代码,使其不打印控制器名称。我试过了,root_url(@link.link)但它没有用......

4

2 回答 2

3

:as您可以使用该选项显式命名路由。

match "/:id" => "linkbunches#show", as: :linkbunch

注意你的原始路线是如何无名的

➜  ~ ✗ rake routes | grep bunch
                /:id(.:format)    linkbunches#show

一旦你像我上面展示的那样命名它

➜  ~ ✗ rake routes | grep bunch
   linkbunch    /:id(.:format)    linkbunches#show

这将允许您继续linkbunch_url(@link.link)在您的视图中使用。

于 2013-01-16T11:43:00.197 回答
0

@Deefour 是对的。然而,我建议的一件事是始终限制您认为合适的 HTTP 方法。因此,请match使用get

get "/:id" => "linkbunches#show", as: :linkbunch

您可以使用matchwith (在未来的 Rails 版本中via: :get使用时需要这样做),但更喜欢其他显式形式。match

于 2013-01-16T11:49:01.217 回答