Използване на течност в Rails 3

Създавам Rails блог двигател за целите на обучението. Искам да използвам течност като шаблонна машина. Имам нещо такова

    ## posts_controller.rb
    ...
    def index
      @posts = Post.all
    end
   ... 
    ## posts/index.html.liquid
    {% for post in posts do %}
      {{ post.title }}
    {% endfor %}

Това ми даде следната грешка:

undefined local variable or method `template' for
#<PostsController:0x103d16290>

Вече имах зареден LiquidView в initializers/liquid.rb Моля, уведомете ме какъв е проблемът ми. Благодаря ти


person Voidx    schedule 28.03.2011    source източник
comment
Обаждате ли се на template някъде в PostsController? Как изглежда вашият инициализатор? Повече подробности = по-добри отговори.   -  person coreyward    schedule 28.03.2011
comment
Нямам шаблонен метод в PostsController. Ето моят инициализатор: изискват 'extras/liquid_view' ActionView::Template.register_template_handler :liquid, LiquidView. Просто си помислих, че течността ще действа магически като haml.   -  person Voidx    schedule 28.03.2011
comment
добре, прегледах течната документация и наистина не помогна много. Всеки, който има познания за настройка на приложение за релси, зареждащо течни локални файлове, или знае проект с отворен код, който прави това, моля, помогнете ми. Благодаря много.   -  person Voidx    schedule 28.03.2011
comment
вижте stackoverflow.com/questions/7855837/, което трябва да го поправи.   -  person emilebaizel    schedule 23.04.2012


Отговори (1)


Както знам, трябва да имате течни методи за атрибути (във вашия случай за „title“). опитайте нещо подобно

class Post < ActiveRecord::Base
  liquid_methods :title
end

и виж.

Ако не, опитайте се да направите клас Post наследен от Liquid::Drop

като

class Posts < Liquid::Drop

end

** Между другото, тъй като получавате грешка, изисквайки липсваща променлива на шаблона, уверете се, че вашата част за течно изобразяване е както следва

(директно копирано от течен документ)

@template = Liquid::Template.parse("hi {{name}}")  # Parses and compiles the template
@template.render( 'name' => 'tobi' )               # Renders the output => "hi tobi"

Надявам се това да помогне

наздраве

sameera

person sameera207    schedule 28.03.2011