如何在我的控制器中更改索引方法更干

时间:2014-03-27 19:03:17

标签: ruby-on-rails

我是Rails的初学者,我知道我总是要努力做得更干。

我有一个与我的内容模型相关联的评论系统,我在页面滚动时用ajax加载我的评论。

在我看来,我有:

 %section.article-comments{'data-url' => content_comments_path(@content)} 

在我的routes.rb文件中我有路径

resources :contents,      only: :index do
    resources :comments, only: :index
  end

我的评论控制器当然是

def index
 @content  = Content.find(params[:content_id])
 @comments = @content.comments
 render ...
end

现在我想在视频和图库中添加评论。

所以我需要为每个资源添加一个路由,我需要一个gallery_index和一个video_index。

评论控件中的内容,视频和图库索引方法被重复,我无法理解我怎样才能更干。

1 个答案:

答案 0 :(得分:0)

所有控制器都可能从ApplicationController继承:

class CommentsController < ApplicationController

如果你发现自己在任何控制器方法中都有很多重复,你可以在ApplicationController中定义它,而不是在每个控制器中进行一些特定的处理。

例如:

class ApplicationController < ActionController::Base
  def index
    ...some common processing...
    specific_index_processing
  end

  private

  def specific_index_processing
    # empty method; will be overridden by each controller as required
  end
end

class CommentsController < ApplicationController
  private

  def specific_index_processing
    ...specific procesing for the comments index method...
  end
end

当然,如果你的一个控制器需要与这种常用方法完全不同,你总是可以覆盖整个索引方法。