Rails link_to_remote деградации и url_for - PullRequest
1 голос
/ 26 марта 2009

Я пытаюсь создать ссылку для уничтожения и записи в БД с помощью AJAX, но я также хочу, чтобы она работала без включенного JavaScript

Однако следующий код

<%=link_to_remote "Delete", :update => "section_phone", :url => {:controller => "phone_numbers", :action => "destroy", :id => phone_number_display.id }, :href => url_for(:controller => "phone_numbers", :action => "destroy", :id => phone_number_display.id)%>

производит вывод

 <a href="#" onclick="new Ajax.Updater('section_phone', '/phone_numbers/destroy/1', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('b64efb643e49e9af5e2e195a90fd5a8b6b99ece2')}); return false;">Delete</a>

По какой-то причине url_for не работает должным образом, а тег href установлен на #. Я не знаю, почему это не работает, так как я не уведомлен об ошибках в журнале

Кто-нибудь знает, почему это может быть?

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 марта 2009

Вам не хватает фигурных скобок вокруг хэша параметров {}, к которому принадлежат: update и: url, чтобы отделить их от хеша html_options {}, к которому принадлежит: href.

Попробуйте это:

<%=link_to_remote "Delete", {:update => "section_phone", :url => {:controller => "phone_numbers", :action => "destroy", :id => phone_number_display.id }}, :href => url_for(:controller => "phone_numbers", :action => "destroy", :id => phone_number_display.id)%>

При этом URL будет отображаться как атрибут href вашей ссылки, но GET-запрос к вашему действию уничтожения не должен удалять его. Вам понадобится что-то еще (например, то, что предлагает vrish88), чтобы вы могли сделать GET-запрос на действие уничтожения, чтобы получить форму, а затем отправить эту форму, чтобы фактически удалить номер телефона.

1 голос
/ 27 марта 2009

Полагаю, вы ищете что-то вроде этого: RailsCasts - уничтожить без JavaScript

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