0

我无法弄清楚要为以下场景选择哪些参数进行比较。

我想链接到我网站上的特定页面,具体取决于使用哪个范围来获取主页上显示的数据。这可能吗?

例如,我有一个职位和部门模型,关系如此

邮政

belongs_to :department

部门

belongs_to :post

我通过范围抓取帖子,然后有一种方法从其范围中抓取第一个帖子。

scope :tynewydd_posts, :include => :department, :conditions => {"departments.name" => "Ty Newydd"}, :order => "posts.published_on DESC"
scope :woodside_posts, :include => :department, :conditions => {"departments.name" => "Woodside"}, :order => "posts.published_on DESC"

然后显示每个帖子的第一个帖子

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

在我看来,然后我会遍历热门帖子

<% @toppost.each do |t| %>
<%= link_to 'Read more' %> <!-- Want to put a helper method here -->

<% end %>

路线

/tynewyddnews #tynewydd_posts
/woodsidenews #woodside_posts

在@toppost 实例变量中,我有可用的属性department.name,我通过我的.each 循环中的t.department.name 访问。

例如,我将如何说“如果@toppost.department.name ==“xxxx”然后link_to“/path”。只是寻找一些关于结构的提示,或者如果这可以转换为案例陈述,那将是什至更好的

谢谢

4

1 回答 1

1

您可以使用哈希而不是数组,然后只返回键,因为您不需要它们的值:

def self.top_posts
   top_posts = { "tynewydd" => self.tynewydd_posts.first, 
              "woodside" => self.woodside_posts.first,
              "sandpiper" => self.sandpiper_posts.first,
              "outreach" => self.outreach_posts.first
               }
   top_posts.delete_if {|x| x.value==nil}
   return top_posts.keys
end

现在你得到一个这样的哈希键数组: ["tynewydd","woodside",..]

在您看来:

<% @toppost.each do |t| %>
      <%= link_to 'Read more', "#{t}news_path" %>
<% end %>
于 2013-04-08T10:31:25.830 回答