0

当您在 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()

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

4

2 回答 2

5

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

Rails 为您提供了通过方法构建 url 的足智多谋的方式polymorpic_path/_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前缀,您知道该怎么做,但具体方法取决于您。

于 2012-06-11T12:47:55.897 回答
0

你有所有需要的信息。第一列告诉您路由助手名称的前缀(例如 new_edition)。您需要做的就是添加_path_url拥有完整的方法名称。

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

于 2012-06-11T12:06:12.107 回答