2016-11-10 69 views
1

我想改善我的代碼在控制器根據DRY。DRY在控制器

def create 
    blog.user = current_user 
    blog.save 
    respond_with blog, location: user_root_path 
    end 

    def update 
    blog.update(blog_params) 
    respond_with blog, location: user_root_path 
    end 

    def destroy 
    blog.destroy 
    respond_with blog, location: user_root_path 
    end 

每種方法都有一個respond_with博客,位置:user_root_path。我怎樣才能隱藏它?

回答

2

你可以做一個:after_action過濾

之後的動作完成後,過濾器運行。它可以修改響應。大多數情況下,如果在後置過濾器中完成某項操作,則可以在操作本身中完成,但如果在運行任何一組操作後要運行某個邏輯,則後置過濾器是一個很好的地方它。

:after_action :responding, only: [:create, :update, :destroy] 

def create 
    blog.user = current_user 
    blog.save 
end 

def update 
    blog.update(blog_params) 
end 

def destroy 
    blog.destroy 
end 

def :responding 
    respond_with blog, location: user_root_path 
end