Rails 4: вы не должны использовать метод `match` в своем маршрутизаторе без указания метода HTTP

Хорошо, поэтому я обновился до Rails 4 (вроде незапланированного с обновлением сервера 10.9) и смог получить все, что работает в приложении моей галереи, за исключением маршрутов. По какой-то причине у меня всегда были проблемы с пониманием маршрутов с рельсов 3. Вот мой предыдущий рабочий код под Rails 3

root :to => "gallery#index", :as => "gallery"

get 'gallery' => 'gallery#index'
resources :galleries

match 'gallery_:id' => 'gallery#show', :as => 'gallery'

Я понимаю, что совпадение было обесцененным, но если я пытаюсь использовать GET, я получаю следующую ошибку:

Недействительное имя маршрута, уже используемое: 'gallery' Возможно, вы определили два маршрута с тем же именем, используя параметр :as, или вы можете переопределить маршрут, уже определенный ресурсом с тем же наименованием.

В принципе, я хочу, чтобы корневой индекс (index) загружался как "/photos/gallery", как и он, и мое действие show для загрузки, например, записывает id 435 как "/photos/gallery_435", а именно: раньше он работал. Извините за то, что, вероятно, простой вопрос, я просто не могу понять, как маршрутизация рельсов.

Ответ 1

Попробуйте это

match 'gallery_:id' => 'gallery#show', :via => [:get], :as => 'gallery_show'

Затем вы можете обратиться к этому пути как gallery_show_path в своих помощниках и представлениях.

Изменение "как" устраняет конфликт.