Отправка формы и гиперссылки с использованием GET и POST - PullRequest
1 голос
/ 18 мая 2010

У меня есть поисковый ресурс, пользователь может выполнять поиск, заполнив форму и отправив ее, вызывается действие create, поиск сохраняется, вызывается действие show и отображаются результаты. Все это происходит с POST по умолчанию, и все работает нормально.

Пользователь может захотеть сохранить свой поиск в таблице save_search (я не использую таблицу поиска для этой цели, так как в этой таблице хранятся все поиски с целью сбора статистики, и она регулярно очищается). После того, как поиск сохранен, его можно повторно запустить, щелкнув гиперссылку. Здесь я начинаю сталкиваться с проблемами.

Я не вижу способа заставить мою гиперссылку выполнить действие создания поиска с запросом POST и необходимыми данными.

Затем я решил попытаться получить как отправку формы, так и гиперссылку для выполнения поиска с использованием запроса GET. Мне не удалось получить form_for для запуска моего действия по созданию поиска с использованием запроса GET, всегда кажется, что он перенаправлен на мой Индексное действие.

Может кто-нибудь предложить хорошее успокоительное решение этой проблемы, пожалуйста.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Я не совсем уверен, что вы пытаетесь сделать здесь. Если вы хотите отправить форму с запросом GET, вы можете переопределить атрибут HTML в помощнике form_for:

<% form_for blarg, :html => { :method => 'get' } %>
blabla
<% end %>

Rails также поддерживает способ «подделки» HTTP-метода с помощью «магического» параметра (называемого «_method»), который заставляет Rails вести себя так, как если бы он видел HTTP-метод в этом параметре.

Если вы отправляете форму как «get», вы должны убедиться, что ни один такой параметр не установлен. Если вы хотите, чтобы гиперссылка отправляла сообщение «POST», можно настроить его (браузер не будет отправлять реальный запрос POST при нажатии на ссылку)

1 голос
/ 18 мая 2010

Джон, Если я правильно понял, если поиск уже сохранен, вы можете просто получить доступ к ресурсу сохраненного поиска, как в первый раз, и использовать действие show для отображения результата.

В любом случае, если вы все еще хотите сделать сообщение со ссылкой, вспомогательный метод link_to сделает это за вас. Проверьте это: http://www.51773.com/tools/api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001597

С опцией: method =>: post он создаст скрытую форму и опубликует ваши данные.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...