3

我基本上想使用 link_to 链接到控制器的索引方法。我试过:

<%= link_to 'Recipes', Recipe %> 

但输出:

<a href="/recipes/Recipe">Recipes</a>

这显然是不对的,如果它离开了最后一点,它会完全按照我的意愿去做。我认为使用 RESTful 的东西我会开始忽略动作或类似的东西。我有什么误解?

4

1 回答 1

6

使用 restful 路由,大多数时候您需要调用辅助方法来生成路由。

例如:

link_to 'Recipes', recipes_path

有一个优化,您可以只传入一个配方对象,它会在幕后为您调用辅助方法:例如:

link_to 'Recipe X', @recipe

是相同的

link_to 'Recipe X', recipe_path(@recipe)

然而,这只是一个特例。

您正在做的是传递食谱类本身,而不是有效的食谱对象。由于 rails 不知道如何处理这个问题,作为后备它只是调用.to_s你给它的任何东西,然后把它交给recipe_path,这就是你看到奇怪 URL 的原因。

提示:使用_path辅助方法而不是_url方法。

_url为您提供完整的 URL,例如http://stackoverflow.com/recipes/5while _pathjust give you /recipes/5.
完整 URL 的问题在于,在生产过程中,您的 Rails 应用程序在很多时候都作为位于负载均衡器后面的杂种运行,因此它认为它的主机名实际上是1.2.3.4(或任何内部 LAN IP)而不是真实的URL,因此将提供损坏的链接。

于 2008-10-08T05:25:40.617 回答