在这种情况下,如何使用Rails helper link_to RESTfully?

时间:2008-10-08 04:34:34

标签: ruby-on-rails rest

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

<%= link_to 'Recipes', Recipe %> 

但是输出:

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

这显然是不对的,如果它不在最后一位,它会完全按照我的意愿行事。我认为,使用RESTful的东西,我会以某种方式开始忽略动作或类似的东西。我误解了什么?

1 个答案:

答案 0 :(得分:6)

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

例如:

link_to 'Recipes', recipes_path

有一个优化,您可以在其中传递配方对象,它将在幕后为您调用辅助方法:例如:

link_to 'Recipe X', @recipe

相同
link_to 'Recipe X', recipe_path(@recipe)

然而,这只是一个特例。

您正在做的是传递食谱类本身,而不是有效的食谱对象。由于rails不知道要处理这个问题,所以作为后备,它只会在你给它的任何内容上调用.to_s,然后将其提供给recipe_path,这就是你看到奇怪URL的原因。 / p>

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

_url为您提供完整的网址,例如http://stackoverflow.com/recipes/5,而_path只会为您提供/recipes/5
完整URL的问题在于,生产rails应用程序的大部分时间都是作为坐在负载均衡器后面的杂种运行,因此它认为它的主机名实际上是1.2.3.4(或者内部LAN IP是什么)而不是真正的URL,因此将提供断开的链接。