好吧,我有一个很简单的问题,我不能解决。我有一个链接,我显示给我的用户通过以下ruby代码在rails 3应用程序:-
<%= link_to linkbunch_url(@link.link), linkbunch_url(@link.link) %>
打印如下url:-
http://localhost:3000/linkbunches/7yae8t
现在我不希望这个"linkbunch "是我的url的一部分。所以我改变了路线。Rb文件并定义了如下路径:-
match "/:id" => "linkbunches#show"
所以当我将url从http://localhost:3000/linkbunches/7yae8t
更改为http://localhost:3000/7yae8t
时,它将带我到相同的页面。完全没问题。但我不明白如何实际更改ruby代码,使其不打印控制器名称。我尝试了root_url(@link.link)
,但它没有工作…
您可以使用: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)
@Deefour是对的。但是,我建议的一件事是,总是限制您的HTTP方法,因为您认为合适。所以不用match
,用get
:
get "/:id" => "linkbunches#show", as: :linkbunch
您可以将match
与via: :get
一起使用(在未来的Rails版本中使用match
时需要这样做),但更喜欢其他显式形式。