From 41fa6f02f17888e3645cd79a87175bcc30f28d7b Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 15:07:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E5=88=97=E8=A1=A8=E3=80=81?= =?UTF-8?q?=E5=85=B3=E6=B3=A8=E4=B8=8E=E5=8F=96=E6=B6=88=E5=85=B3=E6=B3=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/watchers_controller.rb | 30 +++++++++++++++++++++++--- app/services/service.rb | 14 ++++++++---- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 6c61f1970..096e44f06 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -15,13 +15,37 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WatchersController < ApplicationController - before_filter :require_login, :find_watchables, :only => [:watch, :unwatch] + before_filter :require_login#, :find_watchables, :only => [:watch, :unwatch] def watch - set_watcher(@watchables, User.current, true) + s = Service.new + watchables = s.watch params.merge(:current_user_id => User.current.id) + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (true ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables} } + end + rescue Exception => e + if e.message == "404" + render_404 + else + raise e + end + #set_watcher(@watchables, User.current, true) end def unwatch - set_watcher(@watchables, User.current, false) + s = Service.new + watchables = s.unwatch params.merge(:current_user_id => User.current.id) + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (false ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables} } + end + rescue Exception => e + if e.message == "404" + render_404 + else + raise e + end + #set_watcher(@watchables, User.current, false) end def join diff --git a/app/services/service.rb b/app/services/service.rb index c4eb4bc1c..413d9bfb8 100644 --- a/app/services/service.rb +++ b/app/services/service.rb @@ -1,15 +1,20 @@ class Service def watch params + @current_user = User.find(params[:current_user_id]) @watchables = find_watchables params if @watchables.nil? - + raise '404' end - set_watcher(@watchables, User.current, true) + set_watcher(@watchables, @current_user, true) end def unwatch params - find_watchables params - set_watcher(@watchables, User.current, false) + @current_user = User.find(params[:current_user_id]) + @watchables = find_watchables params + if @watchables.nil? + raise '404' + end + set_watcher(@watchables, @current_user, false) end def find_watchables params @@ -47,5 +52,6 @@ class Service end end end + watchables end end \ No newline at end of file