Ruby on Rails可以在一个动作中有多条路由,同时能够区分行动吗?

时间:2016-05-17 14:55:39

标签: ruby-on-rails ruby

我想做的事情是这样的

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

以及

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

然后能够区分same_action()内部使用的规则。

通过重构为模型和部分来更好地实现这一目标吗?

3 个答案:

答案 0 :(得分:2)

你可以这样做:

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

并根据something param

进行区分

答案 1 :(得分:1)

乍一看,您应该根据参数进行区分,例如:

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/ }

但你需要在开头追加一条共同路线

答案 2 :(得分:1)

经过多思考后,这可能是一个选择,但似乎有点讨厌:

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

希望有更好的方法。