我基本上想使用 link_to 链接到控制器的索引方法。我试过:
<%= link_to 'Recipes', Recipe %>
但输出:
<a href="/recipes/Recipe">Recipes</a>
这显然是不对的,如果它离开了最后一点,它会完全按照我的意愿去做。我认为使用 RESTful 的东西我会开始忽略动作或类似的东西。我有什么误解?
我基本上想使用 link_to 链接到控制器的索引方法。我试过:
<%= link_to 'Recipes', Recipe %>
但输出:
<a href="/recipes/Recipe">Recipes</a>
这显然是不对的,如果它离开了最后一点,它会完全按照我的意愿去做。我认为使用 RESTful 的东西我会开始忽略动作或类似的东西。我有什么误解?
使用 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/5
while _path
just give you /recipes/5
.
完整 URL 的问题在于,在生产过程中,您的 Rails 应用程序在很多时候都作为位于负载均衡器后面的杂种运行,因此它认为它的主机名实际上是1.2.3.4
(或任何内部 LAN IP)而不是真实的URL,因此将提供损坏的链接。