以前に 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 に link_to したい場合は、ケース ステートメントが役立つかもしれないとアドバイスされていますが、私はパラメータとして何を使用するかわからないので、これまでの私の試みは
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 %>
明らかに惨めな試みです。まず、ケースが設定されているときに変数が設定されている例を見ましたか? 誰かがこれを達成する方法についてアドバイスを与えることができれば、それは大歓迎です