Я пытаюсь выяснить, как разрешить пользователю нажимать на ссылку или кнопку на индексной странице, чтобы очистить все объекты из базы данных приложения, а затем перенаправить на вновь очищенную страницу индекса. Итак, с примером модели Article
, я ожидаю, что это должно иметь какое-то отношение к методу Article.destroy_all
, и я ожидаю, что это будет простое решение, но я пробовал некоторые варианты и просто не уверен, как реально реализовать Это.Очистить базу данных в Rails
ответ
Таким образом, это будет другое действие в вашем контроллере. Если мы имеем дело со статьями, то контроллер будет:
class ArticlesController < ApplicationController
def indef
@articles = Article.all
end
def destroy_them_all
Article.destroy_all
redirect_to articles_path
end
end
А в представлении, где вы хотите, чтобы пользователь, чтобы нажать на кнопку, чтобы уничтожить все статьи:
<%= link_to 'Destroy them all', destroy_them_all_path, method: :delete, confirm: 'Are you crazy?' %>
Не забудьте для добавления именованного маршрута в файл маршрутов:
match '/articles/destroy_them_all', to: 'Articles#destroy_them_all', via: :delete
Это должно сработать. Хотя вам, возможно, придется проверить rake routes
, чтобы убедиться, что я правильно понял destroy_them_all_path
.
Большое спасибо! Я получил это, чтобы работать с вашими предложениями, с несколькими необходимыми изменениями. Во-первых, я изменил обычный метод 'destroy' в моем контроллере, чтобы иметь« Article.destroy_all », за которым следует« redirect_to articles_path », а затем удалил перенаправление из метода« destroy_them_all »выше. Затем я изменил ссылку вида на 'article_destroy_them_all_path'. Наконец, я изменил капитализированные «Статьи» по указанному маршруту выше на строчные «статьи». (И была также опечатка в методе 'index' выше.) Большое спасибо за то, что указали мне в правильном направлении! – CodeBiker
попробовать это:
Статья контроллера:
def destroy_all
@Articles = Article.all
@Articles.each do |a|
a.destroy
end
redirect_to articless_path, notice: "Delted"
end
маршруты:
post "articles/destroy_all"
вид:
<%= form_tag ({ :controller => 'articles', :action => 'destroy_all' }) do%>
<%= submit_tag 'destroy all'%>
<% end %>
Этот способ удаления записей медленный и не рекомендуется. Вы должны использовать 'Article.destroy_all' или более эффективный кузен, который не запускает обратные вызовы destroy:' Article.delete_all'. – DiegoSalazar
- 1. Moodle: Очистить базу данных
- 2. Очистить базу данных SQL
- 3. Regex очистить базу данных
- 4. Очистить базу данных OrientDB
- 5. RavenDB очистить базу данных
- 6. Как очистить базу данных Neo4j
- 7. Очистить базу данных NHibernate быстро
- 8. Persistence.createEntityManagerFactory очистить всю базу данных
- 9. Эффективно очистить базу данных Neo4j
- 10. Как очистить базу данных Akavache?
- 11. Ruby On Rails - как программно очистить базу данных?
- 12. Очистить или воссоздать базу данных Ruby on Rails
- 13. Rails 5 как очистить или удалить базу данных postgres
- 14. Очистить базу данных CMS базы данных
- 15. Сбросить базу данных (очистить все), затем засеять базу данных
- 16. Как очистить/освободить базу данных в zend?
- 17. Как очистить базу данных sqlite3 в Джанго
- 18. Как очистить базу данных в Phonegap?
- 19. Rails добавить базу данных
- 20. Как очистить/удалить базу данных greenDao
- 21. Можно ли переместить базу данных Wordpress в базу данных Rails?
- 22. Как очистить/сохранить базу данных django-sentry?
- 23. Очистить базу данных (Sqlite) на устройстве
- 24. Импортировать и очистить базу данных MongoDB
- 25. Очистить базу данных после добавления зависимых:: destroy
- 26. iphone - как очистить базу данных SQLite?
- 27. Как очистить столбцы базы данных в Rails
- 28. Mongodb C Driver: Как очистить базу данных?
- 29. Rails 4: Как сбросить базу данных тестирования?
- 30. Шифровать всю базу данных Rails
В 'index' метода контроллера о котором идет речь, вы бы сделали так, как вы говорите: запустите 'destroy_all' o n объекты, которые вы хотите уничтожить, затем выполните «перенаправление» туда, куда вы хотите пойти. Сделайте снимок, и если вы застряли, вернитесь к stackoverflow с конкретным вопросом. – lurker
Спасибо за ваш ответ. Я не хочу уничтожать объекты каждый раз, когда вызывается действие индекса, только если пользователь делает это по ссылке или кнопке на этой странице - поэтому я не уверен, как вы хотите установить это на место. – CodeBiker
Конечно, я говорил вообще. У вас может быть действие в контексте этого контроллера, который вызывает эту проблему, а затем выполняет «переадресацию». – lurker