Ruby на Rails: rosource RESOURCE_NAME не генерирует индексный маршрут / действие - PullRequest
1 голос
/ 22 марта 2020

я сейчас пытаюсь использовать ресурс, но у меня одна проблема: когда я делаю следующий

resource :orders

маршрут / orders отправляет маршрут к OrdersController # index скорее это указывает на действие контроллера show , как я могу решить эту проблему?

this is the routes that are generated

, потому что эта проблема, я должен сделать это, что я чувствую, вроде хак и не хорошо

  get '/orders', to: 'orders#index'
  get '/orders/:id', to: 'orders#show'

это мой routes.rb файл

Rails.application.routes.draw do
  get '/carts', to: 'carts#index'

  get '/payments', to: 'payments#index'
  post '/payments', to: 'payments#add_credits'

  get '/orders', to: 'orders#index'
  get '/orders/:id', to: 'orders#show'

  resources :users do
    resource :orders, only: %i[show create index]
    resource :carts, only: %i[create destroy], path: 'cart', as: 'cart'
  end

  resource :sessions, only: [] do
    post 'login', action: :create
    post 'logout', action: :destroy
    get 'login', action: :new
  end
  resources :products
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end

спасибо за ваш ответ:)

Ответы [ 2 ]

3 голосов
/ 22 марта 2020

Не используйте

resource :orders

используйте

resources :orders

Вы бы использовали resource только тогда, когда элемент orders является единственным объектом в вашем приложении ... который означает, что вы используете множественное число для обозначения этого элемента.

1 голос
/ 22 марта 2020

Переместите ресурс для заказов за пределы Users маршрутов.

Справедливо и справедливо, вы можете иметь как полный ресурс за пределами пользователей, так и эти ограниченные маршруты внутри пользователей, но я не уверен какая цель здесь, так что решать вам.

Rails.application.routes.draw do
  get '/carts', to: 'carts#index'

  get '/payments', to: 'payments#index'
  post '/payments', to: 'payments#add_credits'

  resources :orders

  resources :users do
    resource :orders, only: %i[show create index] <-- not sure if this remains here
    resource :carts, only: %i[create destroy], path: 'cart', as: 'cart'
  end
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...