удаленный form_tag в rails3 без именованного маршрута - PullRequest
7 голосов
/ 18 августа 2010

Что такое правильное заклинание, чтобы сделать этот пост действительно асинхронным?

form_tag :controller => :magic, :action => :search, :method => post, :remote => true do

method = post и remote = true, просто получить сжатие в конце URL вместо того, чтобы фактически сделать его постом ajax.

Ответы [ 3 ]

15 голосов
/ 27 августа 2010

Единственный способ, который я нашел, - это обернуть параметры url в методе url_for.

form_tag url_for(:action => :create, :id => @artist.id), :remote => true do 

Однако, если вам нужно передать параметр method, вам может понадобиться заключить его в скобки и пульт дистанционного управления.

10 голосов
/ 21 апреля 2011

Вот что вам нужно:

form_tag( { :controller => :magic, :action => :search, :method => post }, { :remote => true } ) do ....

Это своего рода плохой дизайн, но методы Rails form_tag требуют ДВУХ хешей - хеш опций url_for и хеш обычных опций.Это создало много путаницы для многих программистов Rails.Если вы не добавите разграничивающие границы хеша, все опции передаются в url_for (), разрушая :remote => true.

Это добавит data-remote="true" к вашей форме (для использования с ненавязчивым JavaScript), как уже упоминали другие).Оттуда вам нужно создать соответствующий AJAX для привязки для выполнения запроса.

Хотя на самом деле вы должны использовать именованный маршрут, такой как magic_search_path вместо параметров контроллера / действия.

0 голосов
/ 18 августа 2010

Я полагаю, вам нужно использовать form_remote_tag вместо:

form_remote_tag(:url => { :controller => :magic, :action => :search }) do

По умолчанию используется http-метод post.

Если вы хотите передать дополнительные параметры на form_tag, вынужно сделать их в отдельный хеш из параметров url, например:

form_tag { :controller => :magic, :action => :search }, { :method => post, :remote => true } do
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...