Подтвердить что ты не робот

Как добавить настраиваемые маршруты в маршрут ресурсов

У меня есть invoices_controller, у которого есть маршруты ресурсов. Пример:

resources :invoices do
  resources :items, only: [:create, :destroy, :update]
end

Теперь я хочу добавить функцию отправки в счет-фактуру. Как добавить настраиваемый маршрут в качестве invoices/:id/send, который отправит запрос, чтобы сказать invoices#send_invoice и как я должен ссылаться на него в представлениях.

Каков обычный способ рельсов для этого. Спасибо.

4b9b3361

Ответ 1

Добавьте это в свои маршруты:

resources :invoices do
  post :send, on: :member
end

или

resources :invoices do
  member do
    post :send
  end
end

Затем в ваших представлениях:

<%= button_to "Send Invoice", send_invoice_path(@invoice) %>

или

<%= link_to "Send Invoice", send_invoice_path(@invoice), method: :post %>

Конечно, вы не привязаны к методу POST

Ответ 2

resources :invoices do
  resources :items, only: [:create, :destroy, :update]
  get 'send', on: :member
end

<%= link_to 'Send', send_invoice_path(@invoice) %>

Он перейдет к действию send вашего invoices_controller.

Ответ 3

match '/invoices/:id/send' => 'invoices#send_invoice', :as => :some_name

Добавить ссылку

<%= button_to "Send Invoice", some_name_path(@invoice) %>

Ответ 4

В Rails >= 4 вы можете выполнить это с помощью

match 'gallery_:id' => 'gallery#show', :via => [:get], :as => 'gallery_show'