Передача переменных в методы экземпляра модели в шаблонах Liquid

Я играл с шаблонизатором Liquid в эти выходные, и мне интересно, возможно ли следующее. [12166 Скажем, у меня есть метод latest_posts в модели Blog , которому я могу передать целое число, чтобы получить последние N сообщений. Можно ли использовать этот метод в жидком шаблоне?

Например:

class Blog

  has_many :posts

  def latest_posts(n)
    posts.latest(n) # using a named scope
  end

  def to_liquid(*args)
    {
      'all_posts' => posts.all,  # allows me to use {% for posts in blog.all_posts %}
      'last_post' => post.last,  # allows me to use {% assign recent = blog.last_post %}
      'latest_posts' => posts.latest_posts(args[0])  # how do I pass variables to this?
    }
  end

end

В приведенном выше упрощенном примере в моих жидких шаблонах я могу использовать блог . all_posts и blog.last_post , но не представляю, как мне поступить, как blog.latest_posts: 10 .

Может кто-нибудь указать мне правильное направление?

Одна идея, о которой я подумал, состояла в том, чтобы создать фильтр Liquid и передать в него и объект Blog, и целое число. Что-то вроде:

{% for post in blog | latest_posts(10) %}
  • , но еще не пробовал, так как чувствую, что я немного покачиваюсь в темноте. Буду признателен за помощь более опытных пользователей Liquid.
6
задан manatwork 17 November 2011 в 11:36
поделиться