Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

button_to with GET method option in Rails

I have the following button, which I overwrited to generate a GET request:

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

However, I still get a POST request with extra params :method:

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

I my routes file, I have:

 resources :appointments

What did I do wrong?

Thank you.

like image 572
AdamNYC Avatar asked Dec 30 '11 21:12

AdamNYC


3 Answers

Just use method: and :get

button_to "New User", new_user_path, method: :get
like image 139
DoctorRu Avatar answered Sep 29 '22 09:09

DoctorRu


Buttons aren't supposed to be sending GET requests.

You should use a link_to instead. If you want it to look like a button, apply some CSS. Here's a good article: http://coding.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/

like image 22
Sergio Tulentsev Avatar answered Sep 29 '22 09:09

Sergio Tulentsev


You may want to look at the UJS driver code:

a\[data-method\] is the selector used here:

So the following should work (couldn't really test it):

button_to "Tutor", {...}, :html => { "data-method" => "get" }
like image 34
Tigraine Avatar answered Sep 29 '22 09:09

Tigraine