#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 .