Рефакторинг Rails 3 маршрута - PullRequest
0 голосов
/ 30 января 2011

У меня есть в моих маршрутах:

get '/boutique/new' => 'stores#new', :as => :new_store, :constraints => { :id => /[a-z0-9_-]/ } 
post '/boutique' => 'stores#create', :as => :create_store, :constraints => { :id => /[a-z0-9_-]/ }
get '/:shortname' => 'stores#show', :as => :store, :constraints => { :id => /[a-z0-9_-]/ }
get '/:shortname/edit' => 'stores#edit', :as => :edit_store, :constraints => { :id => /[a-z0-9_-]/ }
put '/:shortname' => 'stores#update', :as => :update_store, :constraints => { :id => /[a-z0-9_-]/ }
delete '/:shortname' => 'stores#delete', :as => :destroy_store, :constraints => { :id => /[a-z0-9_-]/ }

Есть ли более чистый способ сделать то же самое? Это не выглядит элегантно и даже менее, если я добавлю к нему больше элементов управления / действий.

Спасибо.

1 Ответ

2 голосов
/ 30 января 2011

Лучшим вариантом будет придерживаться стандартных маршрутов ресурсов . Если кому-то еще нужно поработать над создаваемым вами приложением, он поблагодарит вас.

Тем не менее, если вам действительно нужна эта настройка маршрутизации (по какой-либо причине), попробуйте следующее:

controller :stores do
  constraints :id => /[a-z0-9_-]/ do
    get    '/boutique/new'    => :new,    :as => :new_store
    post   '/boutique'        => :create, :as => :create_store
    get    '/:shortname'      => :show,   :as => :store
    get    '/:shortname/edit' => :edit,   :as => :edit_store
    put    '/:shortname'      => :update, :as => :update_store
    delete '/:shortname'      => :delete, :as => :destroy_store
  end
end

Я на самом деле не проверял, но это должно работать нормально.

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