From 696ebc158a7c78ac07dc42a879b82f72e4fa7c05 Mon Sep 17 00:00:00 2001 From: Adrian Short Date: Mon, 25 Mar 2013 16:03:07 +0000 Subject: [PATCH] Fix #15 - when deleting a feed from a layer, just delete the relationship --- app/controllers/feeds_controller.rb | 18 +++++++++--------- app/controllers/layers_controller.rb | 10 ++++++++++ app/views/layers/show.html.haml | 2 +- config/routes.rb | 7 ++++++- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/controllers/feeds_controller.rb b/app/controllers/feeds_controller.rb index 28cf6fc..5de4e82 100644 --- a/app/controllers/feeds_controller.rb +++ b/app/controllers/feeds_controller.rb @@ -91,15 +91,15 @@ class FeedsController < ApplicationController # DELETE /feeds/1 # DELETE /feeds/1.json - def destroy - @feed = Feed.find(params[:id]) - @feed.destroy - - respond_to do |format| - format.html { redirect_to feeds_url, notice: 'Feed deleted OK' } - format.json { head :no_content } - end - end + # def destroy + # @feed = Feed.find(params[:id]) + # @feed.destroy + # + # respond_to do |format| + # format.html { redirect_to feeds_url, notice: 'Feed deleted OK' } + # format.json { head :no_content } + # end + # end def fetch @feed = Feed.find(params[:id]) diff --git a/app/controllers/layers_controller.rb b/app/controllers/layers_controller.rb index 167b0ae..e95fe31 100644 --- a/app/controllers/layers_controller.rb +++ b/app/controllers/layers_controller.rb @@ -84,4 +84,14 @@ class LayersController < ApplicationController format.json { head :no_content } end end + + # DELETE /layers/1/delete_feed + # This only deletes the relation between the layer and the feed. The feed (and its posts) are retained. + # Currently there's no way for the user to actually delete a feed completely. + def delete_feed + @layer = Layer.find(params[:id]) + @feed = Feed.find(params[:feed_id]) + @layer.feeds.delete(@feed) + redirect_to @layer, notice: "Deleted feed #{@feed.title} from this layer" + end end diff --git a/app/views/layers/show.html.haml b/app/views/layers/show.html.haml index 08f76e1..d1ef20f 100644 --- a/app/views/layers/show.html.haml +++ b/app/views/layers/show.html.haml @@ -38,7 +38,7 @@ = (time_ago_in_words(f.last_fetched) + " ago").gsub(/ +/, " ").html_safe %td= link_to "Fetch", fetch_feed_url(f), :class => "button" %td= link_to 'Edit', edit_feed_path(f), :class => "button" - %td= link_to 'Delete', f, :confirm => "Delete #{f.title} and all its posts?", :method => :delete, :class => "button" + %td= link_to 'Delete', delete_feed_layer_path(:feed_id => f.id), :confirm => "Delete #{f.title} from this layer?", :method => :delete, :class => "button" %tr %td diff --git a/config/routes.rb b/config/routes.rb index 81b3caa..d54cde4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,7 +2,12 @@ Apollo::Application.routes.draw do get "logout" => "sessions#destroy", :as => "logout" get "login" => "sessions#new", :as => "login" - resources :layers + resources :layers do + member do + delete "delete_feed" + end + end + resources :users resources :sessions resources :password_resets