2010-01-30 19 views
8

Tôi đã gặp sự cố khi sử dụng liên kết_to. Tại sao liên kết của tôi sử dụng phương thức GET và nút của tôi_để sử dụng phương thức POST, sau khi tôi đã chỉ định "method" => "post" của mình trong các tham số link_to?Button_to sử dụng POST Link_to sử dụng GET, tại sao? ROR

Xem:

<%= button_to "pdf", :action => 'getquote' %> 
<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote', :method => :post } %> 

điều khiển Phương pháp:

def getquote 
@cart = find_cart 
respond_to do |format| 
format.pdf 
end 
end 

ga Output (Nút/Link, tương ứng):

Processing InventoriesController#getquote (for 127.0.0.1 at 2010-01-30 01:38:02) [POST] 
    Parameters: {"action"=>"getquote", "authenticity_token"=>"D2cwnHyTHgomdUM3wXBBXlOe4NQLmv1Srn0paLbExpQ=", "controller"=>"inventories"} 

Processing InventoriesController#show (for 127.0.0.1 at 2010-01-30 01:39:07) [GET] 
    Parameters: {"method"=>"post", "action"=>"show", "id"=>"getquote", "controller"=>"inventories"} 

Trả lời

11

Tôi nghĩ tùy chọn html của bạn phải được trong một hash tách biệt với tùy chọn url của bạn:

<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote'}, {:method => :post } %> 

Tôi nhìn qua tất cả cho một ví dụ thích hợp, không có may mắn. Đối với mã của tôi, tôi đã chủ yếu là từ bỏ và chỉ sử dụng các phong cách mới:

<%= link_to 'Delete', custom_event, :confirm => 'Are you sure?', :method => :delete %> 
+0

Tôi gặp vấn đề tương tự với ROR 3.0.17 (hoặc 18, hoặc 19, không nhớ). Tôi đã đánh dấu giống như "kiểu mới" này, nó hoạt động trên hầu hết các trang ngoại trừ một trang cụ thể. Cuộc gọi là chính xác điều tương tự, tôi không biết có gì sai. Ngoài ra firebug cho thấy rằng liên kết có 2 tham số dữ liệu: data-confirm và data-method. Đây có phải là đúng không? –

1

Một khả năng là bạn phải vô hiệu hóa Javascript, trong trong trường hợp đó nó sẽ rơi trở lại GET.

+1

Javascript được kích hoạt. –

6

Có thể hữu ích cho những người đang đi thăm :)

Theo mặc định, button_to thực hiện POST hành động duy nhất.

để làm làm một GET cú pháp như sau:

<%= button_to 'pdf', { :action => 'getquote'}, :method => :get %> 
+1

Không hoạt động, nhưng chỉ khi bạn chuyển ': get' làm biểu tượng hoặc chữ thường' "get" '. Chuỗi '" GET "' không hoạt động. Chỉ cần một chút. – Gunchars

+3

Khi tôi làm điều này, nó thêm một dấu chấm hỏi "?" đến cuối URL của tôi. Bất cứ ai khác nhìn thấy điều này hoặc có một sửa chữa? –

+1

@TrevorMcKendrick có thể hữu ích này http://stackoverflow.com/a/8122116/1297435 –

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