Следование учебнику по Ruby-on-Rails и получение «уничтожения пользователей» не работает - PullRequest
1 голос
/ 11 марта 2012

Я недавно установил Ruby on Rails 3.2 и пытался изучить его. Я следовал учебному пособию по RoR 3.0 (http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#top), и пока все идет хорошо (да, я знаю, что есть версия 3.2).

В настоящее время я застрял в разделе 10.4.2, который учит, как добавить ссылку для уничтожения пользователей. Там написано добавить код

<%= link_to "delete", user, :method => :delete, :confirm => "You sure?",
                            :title => "Delete #{user.name}" %>

А также добавление в приложения / просмотр / макет / приложение / html / erb

<%= javascript_include_tag :defaults %>

Кажется, что это должно привести к правильному методу уничтожения в пользовательском контроллере, как говорится в учебнике, но он не работает для меня, и я не могу понять, почему. Ссылка, которую он создает, это просто / user /: id. Я посмотрел на ту же секцию в учебнике 3.2, и это довольно те же указания (но в нем нет кода тега включения javascript). Я не могу заставить его работать после этого урока. Поэтому я не уверен, почему он не работает или как заставить его работать.

Таким образом, мы понимаем, что вместо того, чтобы переходить к методу уничтожения в этом пользовательском контроллере, он идет к / user /: id, который является методом show.

Ответы [ 3 ]

5 голосов
/ 11 марта 2012

Для удаления ресурса (пользователь в вашем случае) требуется, чтобы файл jquery_ujs javascript был включен на страницу.Довольно часто можно увидеть, как вызывается действие show, поскольку без jquery_ujs не отправляются скрытые данные, указывающие на глагол HTTP DELETE.

Попробуйте явно вставить jquery_ujs следующим образом:

<%= javascript_include_tag 'jquery_ujs' %>

и посмотрите, что произойдет.

jquery_ujs предназначен для '... ненавязчивого файла поддержки сценариев для среды Ruby on Rails, но не привязан строго к какому-либо конкретному бэкэнду. '.Другими словами, он сканирует документ, видит специальные атрибуты data- * и выполняет различные действия в зависимости от этих атрибутов, например, добавляет скрытые html-элементы, выполняет запросы ajax и т. Д.

Также обратите внимание, что вЧтобы использовать jquery_ujs, на jquery также должны быть ссылки (до).

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

1 голос
/ 26 августа 2014

Моя проблема заключалась в том, что я не ссылался на jquery.Добавление //=jquery исправлено.

0 голосов
/ 26 апреля 2013

Привет, вы также можете попробовать это:

application.html.erb:

<%= javascript_include_tag 'jquery_ujs' %>

OR

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js" %>

и ваш код ссылки должен быть таким:

<%= link_to "<i class='icon-trash'></i> Delete".html_safe, user, :confirm => "Are you sure you want to delete this user? " + user.name + "?" ,:method => :delete%>

и ваш контроллер должен выглядеть так:

def destroy
 @item = Item.find(params[:id])
 if @item.destroy
  redirect_to users_path, :notice => "Successfully deleted a user."
 else 
  redirect_to users_path, :notice => "Failed to delete a user."
 end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...