2010-11-14 13 views
6

Wygląda na to, że powinno być tak proste, ale powoduje problemy.szyny form_tag ścieżka URL

Mam select_tag, który ściąga z modelu. Chcę tylko, aby osoba wybrała swoją lokalizację z listy rozwijanej, naciśnij przycisk "prześlij" i przenieś ją na stronę tego miejsca.

Oto co mam

<% form_tag installation_path do %> 
<%= select_tag :id, options_from_collection_for_select(Installation.find(:all), :id, :name) %> 
<div id="button"> 
    <p> 
    <%= submit_tag "Go", :name => nil %> 
    </p> 
</div> 

Problemem jest to oczywiście chce się :id ale nie będzie ciągnąć :id z rozwijanego menu poniżej dół.

Co robię źle, wszelkie inne sugestie dotyczące "właściwego" sposobu, aby to zrobić.

Dzięki

Odpowiedz

5

Wygląda rzeczywiście chcesz GET, POST nie params.

form_tag installation_path, :method => :get do 
+0

Po pierwsze dziękuję! Używanie niewłaściwej metody było def jeden problem. Jednak aby poprawić trasy, musi to być ścieżka instalacji (id). Jednak identyfikator ciągnięty jest identyfikatorem tablicy z kolekcji collection_select. Jakieś pomysły? Naprawdę nie wydaje się, że to proste zadanie powinno być tak trudne. – looloobs

+3

Oto, co chcesz przesłać formularz, i przejdź do '/ installation /: id'. Zamiast tego przejdziesz do '/ installation? Id =: id'. Więc możesz dać Railsowi trasę 'match '/ installation',: to => 'installation' show''. Problem z tą trasą jest - jest w konflikcie z indeksem. Zamiast tego powinieneś mieć specjalną trasę: 'match '/ goto_installation' => 'installation' show ',: as =>' goto_installation''. Następnie w twojej formie: 'form_tag goto_installation_path,: method =>: get do'. Następnie w kontrolerze przed filtrem można "przekierować do ścieżki instalacji (: id => params [: id])", aby uzyskać pożądany adres URL. –

+0

Cześć Właśnie wracam do tego, okazuje się, że nie mogę użyć "dopasowania", ponieważ nie korzystam jeszcze z rails3. Wszelkie pomysły, jak inaczej to zrobić. Po prostu nie mogę zrozumieć, dlaczego jest to tak skomplikowane. Wygląda na to, że robi się to cały czas, ale nie mogę znaleźć wskazówek. Z góry dziękuję. Doceniam twoją pomoc. – looloobs

Powiązane problemy