#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. да, и вы должны объединить их, как предлагает ответчик. Вероятно, у вас есть дублирующиеся маршруты.