我正在写一个小论坛应用程序,用户可以创建不同类型的论坛。例如,公告、讨论或问题论坛。
论坛模型有许多帖子和一个forum_type
专栏。我想在@post.forum_type
列的基础上使用不同的模板来呈现posts#show
。
因此,根据论坛的类型,每个论坛的帖子都会有不同的外观。
我怎样才能做到这一点而不用if @post.forum_type == 'something'
来乱写代码呢?
发布于 2013-04-05 16:32:10
委派。编写一个帖子渲染器,然后为每个论坛类型实现一个具体的渲染器子类:
class Post
attr_accessor :forum_type
end
class BaseRenderer
def renderer_for(post)
# create the correct renderer for the post here
end
def render_post(post)
renderer = renderer_for(post)
renderer.to_html # return the results
end
class ForumAPostRenderer
def initialize(post)
@post = post
end
def render
# render the post for forum A here\
end
end
class ForumBPostRenderer
def initialize(post)
@post = post
end
def render
#render post for forum B here
end
end
这意味着您只需实现一个渲染器并在renderer_for方法中添加一点逻辑,就可以轻松地为不同的论坛设置皮肤。
https://stackoverflow.com/questions/15838758
复制相似问题