Button_to использует POST Link_to использует GET, почему? ROR

#ruby-on-rails #link-to

#ruby-on-rails #ссылка на

Вопрос:

Я столкнулся с проблемой ror, используя link_to. Почему моя ссылка использует метод GET, а моя button_to использует метод POST после того, как я указал свой «метод» =>»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"}
  

Ответ №1:

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

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

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

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

Комментарии:

1. У меня такая же проблема с ROR 3.0.17 (или 18, или 19, не помню). Я сделал разметку точно так же, как этот «новый стиль», он работает на большинстве страниц, за исключением одной конкретной страницы. Вызов — это то же самое, я не знаю, что не так. Также firebug показывает, что ссылка имеет 2 параметра данных: data-confirm и data-method. Это должно быть правильно?

Ответ №2:

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

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

для выполнения make a GET синтаксис следующий:

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

Комментарии:

1. Работает, но только если вы передаете :get в виде символа или в нижнем регистре "get" . Строка "GET" не работает. Просто немного понял.

2. Когда я делаю это, он добавляет вопросительный знак «?» в конец моего URL. Кто-нибудь еще видит это или имеет исправление?

Ответ №3:

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