如果布尔值为True,则从每个循环中排除第一个帖子

时间:2015-03-14 19:44:26

标签: ruby-on-rails ruby activerecord

目前我正在寻找一个特色的'标题展示,这是完美的 - 唯一不好的是它还显示每个循环中的所有特色帖子。所以你有一个标题展示,然后直接在下面完全相同的帖子(看起来有点傻!)

我希望仅在每个循环中排除第一篇帖子,如果&= 39;精选== true'

目前我正在使用

    <% @posts.each do |post| %>
      <% next if post.featured == true %>

但这是排除所有帖子的特色== true&#39;而我想排除第一篇与之匹配的帖子。

由于

3 个答案:

答案 0 :(得分:2)

尝试此操作,首先在要排除的控制器中获取@exclude_post 然后在view中使用它来检查

@exclude_post_id = @posts.where(featured: true).first.id

<% @posts.each do |post| %>
    <% next if @exclude_post_id == post.id %>

答案 1 :(得分:0)

只需从@posts中排除精选帖子即可使用以下内容:

<% @posts.reject { |p| @featured_posts.include?(p) }.each do |post| %>

答案 2 :(得分:0)

做类似的事情:

@posts = Post.where("id != ?", 
                     Post.where(featured: true).order(created_at).limit(1).first.id)

现在在你看来:

<% @posts.each do |post| %>
    <% your code %>