Не перенаправляется на ожидаемое действие контроллера, Rails - PullRequest
0 голосов
/ 14 марта 2020
Rails 6

В моем config / rout.rb у меня есть:

match "customers/current_customers" => "customers#current_customers", as: :current_customers, via: [:get]

И в моем выпадающем меню у меня есть:

.dropdown-menu aria-labelledby="Customers"
  button.dropdown-item type="button"
    = link_to current_customers_path
      = t('current_customers')

Мои маршруты, показывают:

customers GET /customers(.:format) customers#index 
POST /customers(.:format) customers#create 
new_customer GET  /customers/new(.:format) customers#new 
edit_customer GET  /customers/:id/edit(.:format)   customers#edit 
customer GET  /customers/:id(.:format) customers#show 
PATCH  /customers/:id(.:format) customers#update 
PUT  /customers/:id(.:format) customers#update 
DELETE /customers/:id(.:format) customers#destroy 
current_customers GET  /customers/current_customers(.:format)   customers#current_customers 

а. в controllers / Customers_controller.rb, у меня есть:

def current_customers
  @customers = Customer.current_customers
end

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

Started GET "/customers/current_customers" for 127.0.0.1 at 2020-03-13 18:04:15 -0700
Processing by CustomersController#show as HTML
  Parameters: {"id"=>"assigned_customers"}

Что не получается, очевидно, со следующим сообщением :

ActiveRecord::RecordNotFound (Couldn't find Customer with 'id'=current_customers):  
app/controllers/customers_controller.rb:86:in `set_customer'

Почему вместо current_customers идет действие show ?

1 Ответ

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

Ваши маршруты обрабатываются сверху вниз, и приоритет отдается маршрутам сверху.

При условии, что у вас также есть resources :customers, а затем под ним стоит match ..., приоритезируя match должно дать вам результат, который вы ищете. Кроме того, используя collection:

match "customers/current_customers" => "customers#current_customers", as: :current_customers, via: [:get]
resources :customers

или (предпочтительно)

resources :customers do 
  collection do 
    get :current_customers
  end 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...