Button_to использует POST Link_to использует GET, почему? ROR - PullRequest
8 голосов
/ 30 января 2010

Я столкнулся с проблемой ror, используя link_to. Почему в моей ссылке используется метод GET, а в моей кнопке - метод POST, после того как я указал свой "method" => "post" в параметрах link_to?

Вид:

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

Метод контроллера:

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

Терминальный выход (кнопка / ссылка, соответственно):

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"}

Ответы [ 3 ]

12 голосов
/ 17 февраля 2010

Я думаю, что ваши html-параметры должны быть в отдельном хеше от ваших URL-параметров:

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

Я искал подходящий пример, но безуспешно. Что касается моего кода, я в основном отказался и просто использовал новый стиль:

<%= link_to 'Delete', custom_event, :confirm => 'Are you sure?', :method => :delete %>
7 голосов
/ 25 марта 2012

Может быть полезно для тех, кто посещает:)

По умолчанию button_to выполняет только действие POST.

чтобы сделать GET, синтаксис следующий:

<%= button_to 'pdf', { :action => 'getquote'}, :method => :get %>
1 голос
/ 30 января 2010

Одна из возможностей заключается в том, что у вас отключен Javascript, и в этом случае он возвращается к GET.

...