我正在编写一个小型论坛应用,用户可以在其中创建不同类型的论坛。例如,公告,讨论或问题论坛。
论坛模型有很多帖子和forum_type
列。我想基于posts#show
列使用不同的模板呈现@post.forum_type
。
因此,每个论坛,根据其类型,将在其帖子中具有独特的外观。
如果不使用if @post.forum_type == 'something'
...
答案 0 :(得分:1)
团。编写一个post renderer,然后为每个论坛类型实现一个具体的渲染器子类:
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方法中添加一些逻辑来轻松浏览不同的论坛。