Molfar
Molfar

Reputation: 1491

Add custom new routes to rails resources

I my routes file, I have defined a resource

namespace :admin do
  resources :invoices, only: [:index, :new]
end

Then I've got a route rule with corresponding path helper new_admin_invoice_path

new_admin_invoice GET /admin/invoices/new(.:format) admin/invoices#new

But how can I add two more new rules, so thуe look like

new_admin_incoming_invoice GET /admin/invoices/new/incoming(.:format) admin/invoices#new {:type=>:incoming}
new_admin_outgoing_invoice GET /admin/invoices/new/outgoing(.:format) admin/invoices#new {:type=>:outgoing}

I tried add them manually

resources :invoices, only: [:index, :new] do
  get 'new/incoming', on: :collection, action: :new, type: :incoming
  get 'new/outgoing', on: :collection, action: :new, type: :outgoing
end

But got wrong result

new_incoming_admin_invoices GET /admin/invoices/new/incoming(.:format) admin/invoices#new {:type=>:incoming}
new_outgoing_admin_invoices GET /admin/invoices/new/outgoing(.:format) admin/invoices#new {:type=>:outgoing}

How can I get exactly that routes with path helpers what I need?

Upvotes: 1

Views: 649

Answers (2)

Gautam Kathrotiya
Gautam Kathrotiya

Reputation: 1

Try by using a scope like this:

scope "/admin" do resources :invoices end

Upvotes: 0

Molfar
Molfar

Reputation: 1491

Here is the easy rails way from official guide

resources :invoices, only: [:index] do
  get 'incoming', on: :new, type: :incoming, action: :new
end

Results to

incoming_new_admin_invoice GET /admin/invoices/new/incoming(.:format) admin/invoices#new {:type=>:incoming}

Upvotes: 3

Related Questions