Постройте путь, который связывает с настраиваемым методом в контроллерах

У меня есть нестандартный метод listByName в OrdersController, как показано ниже.

class OrdersController < ApplicationController
     def index
         @orders=Order.all
     end 

     def listByName(name)
        @orders=Order.find_by(:name=>name)
        render index        
     end
end

Я хочу создать некоторые ссылки, которые могут быть направлены на метод OrdersController#listByName.

<%= link_to 'listByName', listByName_path %>

Моя проблема заключается в том, как построить путь в html.erb страница, и как написать маршрутизатор.rb?
Спасибо

1 ответ

  1. См. руководство по маршрутизации . На ваш вопрос отвечают 1.1 и 1.2.

    1.1 подключение URL-адресов к коду при получении приложением Rails входящего запроса на:

    GET /patients/17
    

    он просит маршрутизатор сопоставить его с контроллером
    действие. Если первый совпадающий маршрут:

    get '/patients/:id', to: 'patients#show'
    

    запрос отправляется на
    действие выставки регулятора пациентов с { id: '17' }в params.

    1.2 создание путей и URL-адресов из кода можно также создавать пути и URL-адреса. Если маршрут выше изменен, чтобы быть:

    get '/patients/:id', to: 'patients#show', as: 'patient'
    

    и ваше приложение содержит этот код в контроллере:

    @patient = Patient.find(17)
    

    и это в соответствующем представлении:

    <%= link_to 'Patient Record', patient_path(@patient) %> then the
    

    маршрутизатор генерирует путь /patients/17. Это уменьшает
    хрупкость вашего представления и делает ваш код более понятным.
    Обратите внимание, что идентификатор не требуется указывать в помощнике маршрута.