如何获得命名助手的原始路线?

时间:2015-12-17 03:14:03

标签: ruby-on-rails

我有

# routes.rb
Rails.application.routes.draw do
    get   'order/:order_id/add_item/:item_id' => 'order#item_add', as: :order_add_item
end

我可以致电order_add_item_url(order_id: something, item_id: some_other),它会返回order/something/add_item/some_other

我的问题是,我可以获得“原始”网址吗?所以我希望获得order_add_item_url返回order/:order_id/add_item/:item_id

之类的内容

我已经深入研究了Rails的Journey internals,并获得了类似的字段:

Rails.application.routes.named_routes.routes[:order_add_item].path.source
=>  "\\A/pos/order/([^/.?]+)/add_item/([^/.?]+)(?:\\.([^/.?]+))?\\Z"

但它删除了我在routes中写道的路径的“原始”版本。没有:item_id:order_id

我使用的是Rails 4.2。

1 个答案:

答案 0 :(得分:4)

我相信这是你想要的,或者至少在某个地方让你开始工作:

Rails.application.routes.named_routes.routes[:order_add_item].path.spec.to_s