2011-12-30 31 views
13

Tôi có nút sau, mà tôi overwrited để tạo ra một yêu cầu GET:button_to với tùy chọn phương thức GET trong Rails

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

Tuy nhiên, tôi vẫn nhận được một yêu cầu POST với thông số phụ: Phương pháp:

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

tôi tập tin tuyến đường của tôi, tôi có:

resources :appointments 

tôi đã làm gì sai?

Cảm ơn bạn.

Trả lời

12

Nút không được phép gửi yêu cầu GET.

Thay vào đó, bạn nên sử dụng link_to. Nếu bạn muốn nó trông giống như một nút, hãy áp dụng một số CSS. Dưới đây là một bài viết tốt: http://coding.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/

+1

Còn nút Tìm kiếm thì sao? Họ thường sử dụng các yêu cầu 'GET'. – mwfearnley

+1

Điều này không trả lời được câu hỏi. Khi ai đó hỏi, "Làm thế nào để tôi làm X?" nó thay đổi chủ đề để trả lời, "Bạn không nên làm X, nhưng Y thay vào đó." –

+1

@LukeLaupheimer: đôi khi (khá thường xuyên, trên thực tế), đó là một câu trả lời hợp lệ. Có lẽ không phải trong trường hợp này. –

1

Bạn có thể muốn nhìn vào UJS driver code:

a\[data-method\] được chọn sử dụng ở đây:

Vì vậy, sau đây nên làm việc (có thể không thực sự kiểm tra nó):

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

Cảm ơn Tigraine. Giải pháp của bạn không hiệu quả với tôi. Tôi nghi ngờ rằng có thể có xung đột giữa Prototype (mà tôi loại bỏ) với jQuery mà ngăn cản tôi từ buộc một phương pháp có được. – AdamNYC

+0

Ah xin lỗi .. Tôi chỉ nhìn vào mã UJS và nghĩ rằng điều này sẽ làm việc .. Ít nhất nếu bạn sử dụng một '' tag nó nên – Tigraine

30

Chỉ cần sử dụng phương pháp : và : có được

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

Đó là những gì ông sử dụng, không? –

+1

Trong trường hợp bạn có một số tùy chọn html, hãy nhớ để bọc tất cả mọi thứ trong một băm: 'button_to" Người dùng mới ", new_user_path, {method: 'get', class:" some-class "}' – borjagvo

+0

Hoặc nếu bạn cần sử dụng băm đường dẫn, hãy chắc chắn tách riêng 'phương thức' khỏi nó:' button_to "Frob User", {action:: frob, id: user.id}, phương thức:: get' – mwfearnley

Các vấn đề liên quan