在rails 3应用程序中使用helper打印根url



好吧,我有一个很简单的问题,我不能解决。我有一个链接,我显示给我的用户通过以下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

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

相关内容

  • 没有找到相关文章

最新更新