Как добавить настраиваемые маршруты в маршрут ресурсов
У меня есть invoices_controller
, у которого есть маршруты ресурсов. Пример:
resources :invoices do
resources :items, only: [:create, :destroy, :update]
end
Теперь я хочу добавить функцию отправки в счет-фактуру. Как добавить настраиваемый маршрут в качестве invoices/:id/send
, который отправит запрос, чтобы сказать invoices#send_invoice
и как я должен ссылаться на него в представлениях.
Каков обычный способ рельсов для этого. Спасибо.
Ответы
Ответ 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'