Saturday, September 28, 2013

Jak usunąć kilka pozycji przez checkbox?

sobota, wrzesień 28, 2013 Dodany przez Miłosz Osiński #RUBY ON RAILS ##
Tutaj wyjaśnie jak dodać do swojej aplikacji możliwość usuwania z bazy kilku zaznaczonych pozycji naraz

Jest to bardzo przydatna opcja jeśli będziemy mieć listę jakiś pozycji i nie chcemy pojedyńczo każdą usuwać...
<%= form_tag destroy_multiple_articles_path, method: :delete do %>
   <% @articles.each do |article| %>
       <%= check_box_tag "articles[]", article.id, false %>
       <%= link_to article.title, article %>
   <% end %>
<% end %>

W kontrollerze articles_controller.rb dodajemy:
#app/controllers/articles_controller.rb
  def destroy_multiple
    Article.destroy(params[:articles])

    respond_to do |format|
       format.html { redirect_to root_url, notice: 'Gratulacje! Artykuły zostały usunięte!' }
       format.json { head :no_content }
    end
  end

Ostatnie co nam pozotało to zamiana w routes.rb
z takiej postaci:
#config/routes.rb
resources :articles

na taką:
#config/routes.rb
resources :articles do
    collection do
      delete 'destroy_multiple'
    end
end

W tym momecie wszystko już powinno działać poprawnie