簡體   English   中英

Ruby on Rails能否在動作上有所區別的同時有多個路線?

[英]Can Ruby on Rails have multiple routes to one action while being able to differentiate in action?

我想做的是這樣的

get 'example/:id' => 'example#same_action'

並且

get 'slightly_different/:id' => 'example#same_action'

但隨后可以區分same_action()內部使用的規則。

通過重構為模型和局部可以更好地實現這一點嗎?

您可以這樣做:

get ':something/:id', constraints: { something: /example|slightly_different/ }

並根據something參數進行區分

乍一看,您應該根據參數進行區分,例如:

get 'example/:id' => 'example#same_action'
get 'slightly_different/:different_id' => 'example#same_action'

如果您不想使用參數,則可以考慮以下技術:

get 'example/:my_url' => 'example#same_action', constraints: { my_url: /normal|slightly_different/ }

但您需要在開始時附加一條通用路線

經過多考慮之后,這可能是一個選擇,但似乎有點討厭:

request.env['PATH_INFO']將返回"/slightly_different"

希望有更好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM