使用帮助程序在rails 3应用程序中打印根URL

时间:2013-01-16 11:32:37

标签: ruby-on-rails ruby ruby-on-rails-3

好的,我有一个非常简单的问题,我无法解决。 我有一个链接,我通过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),但它没有用......

2 个答案:

答案 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

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