我是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。
评论控件中的内容,视频和图库索引方法被重复,我无法理解我怎样才能更干。
答案 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
当然,如果你的一个控制器需要与这种常用方法完全不同,你总是可以覆盖整个索引方法。