Добавление пользовательских: новые маршруты с использованием маршрутизации Rails 3 - PullRequest
6 голосов
/ 15 июня 2010

В Rails 2 мы можем добавлять пользовательские действия new к ресурсным маршрутам, например:

map.resources :users, :new => {:apply => :get}

Как нам достичь того же в Rails 3?

resources :users do

  get :apply, :on => :new    # does not work

  new do
    get :apply               # also does not work
  end

end

Есть идеи?

Ответы [ 2 ]

6 голосов
/ 15 июня 2010

Вы можете использовать :path_names как объяснено в руководстве по маршрутизации ребер:

resources :users, :path_names => { :new => "apply" }

Это только изменит путь на apply, он все равно будет направленnew действие.Я не думаю, что изменение, которое явно поддерживается больше (что, вероятно, хорошо).

Если вы хотите сохранить действие apply, вам, вероятно, следует выполнить:

resources :users, :except => :new do
  collection do
    get :apply
  end
end

Но это заставляет задуматься, не лучше ли просто переименовать действие apply в new.

4 голосов
/ 15 июня 2010

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

resources :users, :path_names => { :new => 'apply' }

Обратите внимание, что если вы хотите переназначить маршрут new на apply для всех ваших маршрутов, вы можете использовать область действия:

scope :path_names => { :new => 'apply' } do
  # The rest of your routes go here...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...