Почему этот код маршрутов не отображает страницу индекса пользователей?

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я завершил учебное пособие по Hartl и сумел добавить несколько URL-адресов vanity с помощью friendly_id и настройки файла маршрутов. Они используют /username вместо / users /id

Я сделал это, установив friendly_id и настроив routes.rb следующим образом:

   get '/users',      to: 'users#index'
  resources :users, path: '' do
    member do
      get :following, :followers
    end
  end
  

Тем не менее, я хочу сделать этот код красивее, поэтому я попытался изменить его на это:

   resources :users, except: :index, path: '' do
  member do
      get :following, :followers
    end
  end
  

Но он не отображает страницу индекса /users! Я неправильно пишу этот код или схожу с ума?

Редактировать:

Забыл добавить, есть еще один ресурс: пользователи дальше. Это все мои маршруты.rb:

 Rails.application.routes.draw do


  get 'password_resets/new'

  get 'password_resets/edit'

  root 'static_pages#home'
  get '/help',       to: 'static_pages#help'
  get '/about',      to: 'static_pages#about'
  get '/contact',    to: 'static_pages#contact'
  get '/signup',     to: 'users#new'
  post '/signup',    to: 'users#create'
  get '/login',      to: 'sessions#new'
  post '/login',     to: 'sessions#create'
  delete '/logout',  to: 'sessions#destroy'
  get '/users',      to: 'users#index'
  resources :users, path: '' do
    member do
      get :following, :followers
    end
  end

  resources :users
  resources :account_activations, only: [:edit]
  resources :password_resets,     only: [:new, :create, :edit, :update]
  resources :microposts,          only: [:create, :destroy]
  resources :relationships,       only: [:create, :destroy]
end
  

Комментарии:

1. Почему у вас есть два пользовательских ресурса (на самом деле 3)? если нет действительно веской причины, вам, вероятно, следует избавиться от нее.

Ответ №1:

Вы удалили index и исключили его из ресурса.

Комментарии:

1. Извините, забыл добавить, что у меня есть еще один оператор resources: users ниже. Пожалуйста, смотрите обновленный пост

2. Есть ли причина иметь несколько resources :users и снова с ними еще один сингл user#index ? вы можете сделать rake routes , чтобы увидеть все дублирующиеся или переопределенные маршруты

3. Нет других причин, кроме того, что я следовал руководству и в итоге получил 2 ресурса

4. Я думаю, вам следует удалить resource :user маршрут без участника, а также индивидуальный user#index

Ответ №2:

except: Оператор исключает маршрут для индекса. Фактически говорится, что генерируются маршруты ресурсов для пользователей except для действия индекса.

Попробуйте:

  resources :users, path: '' do
  member do
      get :following, :followers
    end
  end
  

Комментарии:

1. Извините, забыл добавить, что у меня есть еще один оператор resources: users ниже. Пожалуйста, смотрите обновленный пост

2. да, и вы должны объединить их, как предлагает ответчик. Вероятно, у вас есть дублирующиеся маршруты.