我有
# 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。
答案 0 :(得分:4)
我相信这是你想要的,或者至少在某个地方让你开始工作:
Rails.application.routes.named_routes.routes[:order_add_item].path.spec.to_s