添加过滤器到Middleman"之前的文章"环

时间:2016-03-14 13:51:18

标签: ruby-on-rails erb middleman

我对此很陌生,所以我希望我能做到这一点。

我正在与Middleman建立投资组合网站。我已经激活了博客扩展,我使用文章作为案例研究。文章包含"特色"在他们的前面,我要么设置为" true"或" false"。

"特色:真"文章显示在主页上。在这些文章的底部,我添加了以下代码,以便能够导航到上一篇和下一篇文章:

<% prev_article = current_article.previous_article %>
<% if prev_article %>
  <a href="<%= prev_article.url %>"><%= prev_article.title %></a>
<% end %>

事情是,我想添加一个过滤器,以便只有带有&#34;特色的文章:true&#34;被添加到此循环中。循环需要跳过非特色文章。

我尝试过以下方法:

<% prev_article = current_article.previous_article %>
<% if prev_article && prev_article.data.featured == "true" %>
  <a href="<%= prev_article.url %>"><%= prev_article.title %></a>
<% end %>

但是,正如预期的那样,这没有任何结果,因为两个条件都没有得到满足。

澄清一下:让我们说第1,3,5和7条是特色,第2,第4和第6条没有特色。

如果我正在阅读第3条,我需要先前的导航才能跳过第2条并直接转到第1条,因为那个是2,而不是2。

希望有人能帮助我:)。

1 个答案:

答案 0 :(得分:0)

我想我现在拥有它。在帮助器映射中创建一个帮助器类,例如:article_helper.rb,如下所示

class ArticleHelper

  def get_previous

  end
end

然后在你的config.rb文件中添加:

helpers do
  def get_previous(article)
    if article.previous_article.present? && article.previous_article.data.featured
      '<a href="' + article.previous_article.url +'">' + article.previous_article.title + '</a>'
    elsif !article.previous_article.present?
      return
    else
      get_previous(article.previous_article)
    end
  end
end

重新启动你的服务器,希望如果你把它放在你的视图中它可以工作

<%= get_previous(current_article) %>

我希望这能为你解决问题