【问题标题】:Why can't rake routes be more helpful为什么 rake 路线不能更有帮助
【发布时间】:2012-06-11 11:58:02
【问题描述】:

当你在 shell 中输入 rake routes 时,它会显示一个不错的路由列表:

      new_edition GET    /editions/new(.:format)           editions#new
     edit_edition GET    /editions/:id/edit(.:format)      editions#edit
         edition GET    /editions/:id(.:format)           editions#show
                 PUT    /editions/:id(.:format)           editions#update
              DELETE /editions/:id(.:format)           editions#destroy

这非常有用,但为什么不显示应用程序中需要使用的实际代码,例如

 edition GET    /editions/:id(.:format)  editions#show  edition_path()

我猜这是因为它可能比这更多,但一般问题是当我查看为路线提供的示例时,我查找了一个如何明确编码以了解路线含义的示例...

【问题讨论】:

  • 因为附加_path 或_url 不是那么难记吗?
  • 谢谢戴夫。你是对的,随着理解的深入,我可以更好地了解如何使用它。

标签: ruby-on-rails routes link-to


【解决方案1】:

直接使用xxx_path 并不是您唯一的选择。

Rails 为您提供了通过 polymorpic_path/_url 方法构建 url 的资源丰富的方法。许多其他助手使用这些方法,例如:

link_to 'Edit', [:edit, @user]     # instead of edit_user_path(@user)
redirect_to Product                # instead of products_path
form_for [@order, @product] do |f| # instead of order_product_path(@order, @product)
visit url_for [:preview, @invoice] # instead of preview_invoice_path(@invoice)

因此,通过查看 preview_invoice 前缀,您就知道该怎么做,但具体方法取决于您。

【讨论】:

  • 谢谢jdoe。您的回答帮助我理解了这些选项以及它们为什么在 rake routes 命令中呈现它们的内容。真的很感激。
  • 这个问题应该被关闭了,但如果失去这个答案会很可惜:)
  • @Arsen7 谢谢,您的评论也不具建设性! :-)
【解决方案2】:

您拥有所需的所有信息。第一列告诉您路由助手名称的前缀(例如 new_edition)。您只需添加_path 或_url 即可获得完整的方法名称。

然后,您有一些路由没有指示相应的辅助方法名称:这是因为它与另一个路由匹配相同的 URL,只有 HTTP 动词(GET、POST)发生了变化。因此,您必须将 method: 'delete' 添加到您的通话中。

【讨论】:

  • 谢谢 ksol - 感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多