Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我如何使我的路线成为可选的?_Ruby On Rails_Ruby On Rails 3_Routing - Fatal编程技术网

Ruby on rails 我如何使我的路线成为可选的?

Ruby on rails 我如何使我的路线成为可选的?,ruby-on-rails,ruby-on-rails-3,routing,Ruby On Rails,Ruby On Rails 3,Routing,我有这个路由,它覆盖资源生成的路由: match "make_tiles(/:tile_type,(:finish))" => "tiles#new", :as => :make_tiles 这允许使用漂亮的URL,如/make_tiles/two_two,matte 但是我想使用以下选项:/make\u tiles/two\u two。目前只有/make\u tiles/two\u two可以工作 我怎样才能摆脱后面的逗号要求呢?你不能用逗号来分隔字段,我不知道你为什么要这样做。

我有这个路由,它覆盖资源生成的路由:

match "make_tiles(/:tile_type,(:finish))" => "tiles#new", :as => :make_tiles
这允许使用漂亮的URL,如
/make_tiles/two_two,matte

但是我想使用以下选项:
/make\u tiles/two\u two
。目前只有
/make\u tiles/two\u two可以工作


我怎样才能摆脱后面的逗号要求呢?

你不能用逗号来分隔字段,我不知道你为什么要这样做。逗号不是很好的路由字段分隔符。如果您确实坚持这样做,请将选项放入一个参数中,并手动将它们分开:

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

应该没问题。

你试过像这样移动paren吗:
制作瓷砖(/:瓷砖类型(,:完成))
?是的,不起作用。它只是将
{“tile\u type”=>“four\u four,matte”}
作为一个参数发送给两个值。