Как сделать часть моего маршрута необязательной? - PullRequest
1 голос
/ 02 февраля 2012

У меня есть этот маршрут, который переопределяет маршрут, генерируемый ресурсами:

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

Это позволяет использовать красивые URL-адреса, такие как /make_tiles/two_two,matte

Но я бы хотел использовать опцию: /make_tiles/two_two также. На данный момент работает /make_tiles/two_two,.

Как мне избавиться от требования запятой в конце?

1 Ответ

3 голосов
/ 02 февраля 2012

Вы не можете использовать запятую для разделения полей, и я не уверен, почему вы хотите. Запятая не очень хороший разделитель полей для маршрутов. Если вы действительно настаиваете на том, чтобы сделать это таким образом, попросите опции войти в один параметр и разделить их вручную:

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

должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...