如何让我的路线的一部分可选?

时间:2012-02-02 05:12:37

标签: ruby-on-rails ruby-on-rails-3 routing

我有这条路线,它会覆盖资源生成的路线:

match "make_tiles(/:tile_type,(:finish))" => "tiles#new", :as => :make_tiles

这样就可以获得像/make_tiles/two_two,matte

这样的精彩网址

但是我想选择使用:/make_tiles/two_two。目前只有/make_tiles/two_two,可以使用。

如何摆脱尾随的逗号要求?

1 个答案:

答案 0 :(得分:3)

您不能使用逗号分隔字段,我不确定您为什么要这样做。逗号不是路径的非常好的字段分隔符。如果您真的坚持这样做,请将选项放入一个参数并手动分开:

match "make_tiles(/:tile_type_and_finish)" => "tiles#new", :as => :make_tiles

然后在您的控制器中

(tile_type,finish) = params[:tile_type_and_finish].split(",") if params[:tile_type_and_finish].present?

不允许使用的方法是rails在ActionDispatch :: Routing中将参数分隔符定义为常量:

SEPARATORS = %w( / . ? )

否则

match "make_tiles(/:tile_type(/:finish))" => "tiles#new", :as => :make_tiles

应该可以正常工作。