好的,我有一个非常简单的问题,我无法解决。 我有一个链接,我通过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"
因此,当我将网址从http://localhost:3000/linkbunches/7yae8t
更改为http://localhost:3000/7yae8t
时,它会将我带到同一页面。没问题。
但我不明白如何实际更改ruby代码,以便它不打印控制器名称。我尝试使用root_url(@link.link)
,但它没有用......
答案 0 :(得分: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)
。
答案 1 :(得分:0)
@Deefour是对的。但我建议的一件事是始终根据您的需要限制您的HTTP方法。因此,请使用match
:
get
get "/:id" => "linkbunches#show", as: :linkbunch
您可以将match
与via: :get
一起使用(在将来的Rails版本中使用match
时需要这样做),但更喜欢其他显式格式。