У меня странная проблема, которая, как мне кажется, связана с маршрутами.
В моем «представлении» у меня есть следующее:
<%= button_to "New Item", new_proposal_pitem_path(@proposal), :method => :get %>
Я хочу нажать «Новый элемент»и создайте новый пункт для предложения.Это генерирует HTML-код, который я ожидал бы:
<form method="get" action="/proposals/1234/pitems/new" ...><input ...></form>
Однако, что действительно происходит, когда я нажимаю на кнопку, он пытается получить GET для / предложений / 1234, а не / предложений / 1234 / pitems / new.Это дает мне страницу «шоу», а не «новую» страницу.Интересно, что я могу вручную поместить {site} / offer / 1234 / pitems / new прямо в HTTP-адрес веб-браузера и получить то, что я хочу («новая» страница).Но rails, сам по себе, сначала переводит его в / предложений / 1234, если я оставляю его себе в ответ на нажатие кнопки.
Чтобы сделать это более загадочным, у меня есть аналогичный предмет на том же самомформа, которая выглядит точно так же:
<%= button_to "New Payment", new_proposal_payment_path(@proposal), :method => :get %>
, которая генерирует тот же HTML, что и в другом случае:
<form method="get" action="/proposals/1234/payments/new" ...><input ...></form>
Но этот работает!Когда я нажимаю кнопку, я получаю право на / предложений / 1234 / платежи / новый, как я и ожидал.Я просто не понимаю, что заставляет их вести себя по-разному.
Мой файл полных маршрутов выглядит так:
TCoB::Application.routes.draw do
resources :proposals do
resources :pitems, :payments
get 'list', :on => :collection
end
resources :pitems do
get 'list', :on => :collection
end
resources :invoices do
resources :iitems, :payments
get 'list', :on => :collection
end
resources :iitems do
get 'list', :on => :collection
end
resources :payments do
get 'list', :on => :collection
end
resources :ids
resources :clients do
resources :proposals, :invoices
# Route GET /cients/list
get 'list', :on => :collection
get 'list_proposals', :on => :collection
get 'list_invoices', :on => :collection
end
get "home/index"
root :to => "home#index"
end
Может кто-нибудь пролить свет на эту проблему?
Спасибо!