我想要做的是這樣的事情Ruby on Rails可以通過多個路徑進行一個動作,同時可以區分動作嗎?
get 'example/:id' => 'example#same_action'
也
get 'slightly_different/:id' => 'example#same_action'
但隨後能的same_action()
內部分化爲用於哪個規則。
這是否更好地通過重構模型和部分來實現?
我想要做的是這樣的事情Ruby on Rails可以通過多個路徑進行一個動作,同時可以區分動作嗎?
get 'example/:id' => 'example#same_action'
也
get 'slightly_different/:id' => 'example#same_action'
但隨後能的same_action()
內部分化爲用於哪個規則。
這是否更好地通過重構模型和部分來實現?
你可以這樣說:
get ':something/:id', constraints: { something: /example|slightly_different/ }
和分化基於something
PARAM
乍一看,你應該區分基於PARAMS,例如:
get 'example/:id' => 'example#same_action'
get 'slightly_different/:different_id' => 'example#same_action'
如果你不想使用PARAM,你可以考慮這個tecnique:
get 'example/:my_url' => 'example#same_action', constraints: { my_url: /normal|slightly_different/ }
但你需要在開始追加一條普通路線
啊。很不錯的主意。唯一的問題是,如果它是沒有參數的路線? 只是'示例'和'略有不同'? –
查看我的更新回答 –
經過多思考後,這可能是一個選擇,但它似乎有點討厭:
request.env['PATH_INFO']
將返回"/slightly_different"
希望有一個更好的辦法。
可以訪問相同的方法,無論哪種方式。你可以通過改變url後的參數來達到你想要的效果,比如 slightly_different /:id?param = 1 然後根據參數添加邏輯 –
我不討厭它,但我希望如果可能的話就避免這個。 –