2011-12-30 18 views
13

Mam następujący przycisk, który ja nadpisywany aby wygenerować żądanie GET:button_to z GET opcji metoda w szynach

= button_to "Tutor", {:controller => "appointments", :action => "new", 
    :listing_id => @listing.id} , :method => :get 

Ja jednak wciąż żądania POST z dodatkowych params: Metoda:

Processing by AppointmentsController#new as HTML 
    Parameters: {"authenticity_token"=>"AWkL", "listing_id"=>"2", "method"=>"get"} 

I mój plik trasy, mam:

resources :appointments 

Co zrobiłem źle?

Dziękuję.

Odpowiedz

12

Przyciski nie powinny wysyłać żądań GET.

Zamiast tego należy użyć numeru link_to. Jeśli chcesz, aby wyglądał jak przycisk, zastosuj trochę CSS. Oto dobry artykuł: http://coding.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/

+1

Co z przyciskami wyszukiwania? Często używają żądań typu "GET". – mwfearnley

+1

To nie odpowiada na pytanie. Kiedy ktoś pyta: "Jak mam zrobić X?" zmienia temat, na który ma odpowiedzieć: "Nie powinieneś robić X, ale Y zamiast tego". –

+1

@LukeLaupheimer: czasami (dość często, w rzeczywistości), to jest poprawna odpowiedź. Może nie w tym przypadku. –

1

Możesz zajrzeć na UJS driver code:

a\[data-method\] jest selektor używany tutaj:

więc następujące powinien działać (nie można było go przetestować):

button_to "Tutor", {...}, :html => { "data-method" => "get" } 
+0

Dzięki Tigraine. Twoje rozwiązanie nie działa dla mnie. Podejrzewam, że może istnieć konflikt między prototypem (który usunąłem) z jQuery, który uniemożliwia mi wymuszenie metody pobierania. – AdamNYC

+0

Ach przepraszam .. Po prostu spojrzałam na kod UJS i pomyślałam, że to powinno działać. Przynajmniej jeśli użyjesz tagu '', powinno to być – Tigraine

30

Wystarczy użyć metodę a : uzyskać

button_to "New User", new_user_path, method: :get 
+0

To właśnie on używa, nie? –

+1

Jeśli masz jakieś opcje html, pamiętaj o zawinięciu wszystkiego w haszcie: 'button_to" New User ", new_user_path, {method: 'get', class:" some-class "}' – borjagvo

+0

Lub jeśli potrzebujesz użyć ścieżka hash, upewnij się, że oddzielasz od niej 'method':' button_to "Frob User", {action:: frob, id: user.id}, method:: get'' – mwfearnley

Powiązane problemy