我以前没有使用过 case 语句,并且想知道如何执行以下操作。
我有许多新闻页面,每个都有与部门相关的帖子,所以这些页面
/tynewyddnews
/woodsidenews
/outreachnews
/sandpipernews
在我的主页上,我从每一个中获取最新帖子并显示它们。
后模型
def self.top_posts
#Array with each of the 4 departments - first record
top_posts = [
self.tynewydd_posts.first,
self.woodside_posts.first,
self.sandpiper_posts.first,
self.outreach_posts.first
]
#remove entry if nil
top_posts.delete_if {|x| x==nil}
return top_posts
end
tynewydd_posts 例如是一个范围
scope :tynewydd_posts, :include => :department, :conditions => {"departments.name" => "Ty Newydd"}, :order => "posts.published_on DESC"
因此,如果我正在阅读来自 tynewydd 的主页上的帖子并想要创建指向 /tynewyddnews 的链接,或者我正在阅读来自woodside 的帖子并想要链接到 /woodside 我被告知案例陈述可能会有所帮助,但我不确定使用什么作为参数,所以到目前为止我的尝试是
def public_news
case Post.top_posts
when :tynewydd_posts == 'Ty Newydd'
link_to('...Read more', tynewyddnews_path)
when :woodside_posts == 'Woodside'
link_to('...Read More', woodsidenews_path)
end
结尾
然后在我看来我可以打电话给助手
<%= public_news %>
显然是一个悲惨的尝试,首先在示例中我看到在设置案例时设置了一个变量?如果有人可以就如何实现这一目标提供一些建议,将不胜感激