2016-11-10 5 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 blog、location: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