为什么不能耙路线更有帮助

时间:2012-06-11 11:58:02

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

在shell中键入rake路由时,它会显示一个很好的路由列表:

      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()

我猜这是因为当时可能还有更多,但一般的问题是当我查看示例时给出的路径我已经查找了一个如何明确编码以了解路由意味着什么的示例......

2 个答案:

答案 0 :(得分:5)

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

Rails为您提供了通过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前缀,您知道该怎么做,但具体方法取决于您。

答案 1 :(得分:0)

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

然后,您有一些路由没有关于相应帮助方法名称的指示:这是因为它匹配与另一个路由相同的URL,只有HTTP动词(GET,POST)更改。因此,您必须在电话中添加method: 'delete'