Rails 3 и JQuery Mobile - Проблемы с пользовательским диалогом удаления - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь внедрить JQuery Mobile с Rails 3, и у меня есть модель контакта и контроллер контактов .

JQuery Mobile имеет возможность создавать диалоги из обычного представления, которые хорошо работают для мобильных устройств. Я пытаюсь воспользоваться этим при удалении данных из моей модели. Вместо обычного "Ты уверен?" Во всплывающем окне javascript я создал delete.html.erb view и метод удаления в контроллере.

Проблема в том, что при отображении диалогового окна JQuery Mobile оно действует на действие «Обновление» вместо действия «Уничтожить». (см. Изображения ниже)

Я использую это для отображения вида удаления:

# GET /contacts/1  
  def delete
    @contact = Contact.find(params[:id])
    render 'delete'     
  end

Вот метод уничтожения:

def destroy
    contact = Contact.find(params[:id])
    contact.destroy    
 end

А вот код для удаления представления:

<div data-role="header">
    <h1>Delete</h1>     
</div>


<div data-role="content">   
    <%= form_for(@contact, { :action => 'destroy', :id => @contact }) do %>     
        <%= "Delete #{@contact.first_name} #{@contact.last_name}?" %>       
        <%= submit_tag  %>  
    <% end %>   
</div>

Что вызывает рендеринг: enter image description here

I думаю решение проблемы лежит в адресной строке здесь: enter image description here

Как видите, текст кнопки отправки автоматически заполняется методом обновления. Представление удаления присоединяется к представлению редактирования, и Rails рассматривает его как обновление вместо уничтожения.

Мой rout.rb файл очень прост:

resources :contacts

Я предполагаю, что здесь что-то должно измениться, но я не уверен, что. И / или что-то может потребоваться изменить в отношении использования JQuery Mobile.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 27 января 2012

Ну, это всего лишь предположение, но похоже, что оно пытается загрузить его через ajax.Попробуйте отключить ajax с помощью data-ajax="false".Может также случиться так, что вы используете старую версию jqm.Я знаю, что старые версии меняют страницы с помощью хэша, в то время как новые версии используют состояние push, если вы не отключите его.

Если вы пытаетесь удалить пользователя с помощью ajax, возможно, было бы лучше использовать обработчик событий vclick на кнопке и выполнить ручной запрос ajax.

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