2015-12-17 24 views
2

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

# 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的旅程的内部结构,并获得现场是这样的:

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

尝试[这个答案](http://stackoverflow.com/a/5346350/733721)。它使用'Rails.application.routes.named_routes.helpers(&:to_s)'。这可能会给出所有路线,但应该很容易找出如何输出一个路线。 –

+0

我需要原始路径,而不是辅助方法的列表。 – waza

+0

啊。那么,这值得一试。 –

回答

3

我相信这是你想要的,或者至少某处你开始工作:

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

@waza,如果我的回答对你的问题是正确的,请接受它,这样其他人会知道 – vutran