Понимание рейк-маршрутов вывода - PullRequest
4 голосов
/ 26 июля 2011

Я смущен моим rake routes выводом. Для примера (обрезается):

profil GET    /profil/:id(.:format)     {:action=>"show", :controller=>"profil"}
       PUT    /profil/:id(.:format)     {:action=>"update", :controller=>"profil"}
 login GET    /login(.:format)      {:action=>"new", :controller=>"sessions"}
       POST   /login(.:format)      {:action=>"create", :controller=>"sessions"}
logout GET    /logout(.:format)     {:action=>"destroy", :controller=>"sessions"}

Я всегда думал:

  • Линия 2 : Доступ к маршруту возможен с использованием profil_path с использованием метода PUT .
  • Строка 4 : Доступ к маршруту можно получить, используя login_path с методом POST .

Заключение : строки с первым пустым столбцом (строки 2 и 4) будут следовать за той, что над ним.

Однако я экспериментировал с добавлением параметра в URL. Итак, я добавил эти коды в свой routes.rb:

  namespace :admin do
    resources :pengguna_bulk, :only => [:new, :create]
    resources :pengguna do
      collection do
        get 'index/:page', :action => :index
      end
    end
  end

Новый rake routes выход (обрезается):

admin_pengguna_bulk_index POST   /admin/pengguna_bulk(.:format)        {:action=>"create", :controller=>"admin/pengguna_bulk"}
  new_admin_pengguna_bulk GET    /admin/pengguna_bulk/new(.:format)    {:action=>"new", :controller=>"admin/pengguna_bulk"}
                          GET    /admin/pengguna/index/:page(.:format) {:action=>"index", :controller=>"admin/pengguna"}
     admin_pengguna_index GET    /admin/pengguna(.:format)             {:action=>"index", :controller=>"admin/pengguna"}
                          POST   /admin/pengguna(.:format)             {:action=>"create", :controller=>"admin/pengguna"}
       new_admin_pengguna GET    /admin/pengguna/new(.:format)         {:action=>"new", :controller=>"admin/pengguna"}
      edit_admin_pengguna GET    /admin/pengguna/:id/edit(.:format)    {:action=>"edit", :controller=>"admin/pengguna"}
           admin_pengguna GET    /admin/pengguna/:id(.:format)         {:action=>"show", :controller=>"admin/pengguna"}
                          PUT    /admin/pengguna/:id(.:format)         {:action=>"update", :controller=>"admin/pengguna"}
                          DELETE /admin/pengguna/:id(.:format)         {:action=>"destroy", :controller=>"admin/pengguna"}

Мой вопрос: почему 3-й маршрут выглядит так, как будто он находится под 2-м маршрутом? Это пусто, потому что Rails не знает, как его назвать, и мне придется использовать get 'index/:page', :action => :index, :as => :page, чтобы назвать его?

Значит, это означает, что маршрут с пустым первым столбцом не всегда следует вышеуказанному пути?

1 Ответ

1 голос
/ 26 июля 2011

Я всегда думал:

  • Строка 2: доступ к маршруту можно получить с помощью profil_path с методом PUT.
  • Строка 4: доступ к маршруту можно получить с помощью login_path с помощьюМетод POST.

Вывод: строки с первым пустым столбцом (строки 2 и 4) будут следовать за той, что над ним.

Все верно, кроме заключения.profil_path расширяется до /profil/:id(.:format).Если он вызывается с помощью метода GET, он отвечает на ваш первый маршрут, если он вызывается с помощью метода PUT, он отвечает на ваш второй маршрут.

Но то же самое не относится к второму набору маршрутов.У вас нет именованного помощника для /admin/pengguna/index/:page(.:format).Если вам нужен именованный помощник, вы должны определить маршрут следующим образом:

get 'index/:page', :action => :index, :as => :what_ever_named_helper_you_want
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...