【问题标题】:How do I use the Rails helper link_to RESTfully in this situation?在这种情况下,如何以 RESTfully 方式使用 Rails 帮助程序 link_to?
【发布时间】:2010-09-15 22:21:48
【问题描述】:

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

<%= link_to 'Recipes', Recipe %> 

但是输出:

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

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

【问题讨论】:

    标签: ruby-on-rails rest


    【解决方案1】:

    使用 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,而 _path 只为您提供 /recipes/5
    完整 URL 的问题在于,在生产过程中,您的 Rails 应用程序在很多时候都作为位于负载均衡器后面的杂种运行,因此它认为它的主机名实际上是 1.2.3.4(或任何内部 LAN IP)而不是而不是真实的 URL,因此将提供损坏的链接。

    【讨论】:

    • 你的第一个例子应该使用 recipes_path - 你想要索引操作。
    猜你喜欢
    • 2017-04-20
    • 2021-08-20
    • 2011-08-14
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多