2010-03-17 54 views
12

如何在erb中使用产量进行模板继承?我想在普通的ruby CGI脚本中使用erb,并希望像使用基本模板和子模板一样使用应用程序模板的Rails。在没有导轨的ERB中产量

回答

3

我不认为你可以 - Rails提供该基础设施作为actionpack的一部分。

你可以做的是将actionpack添加到脚本中。

或者,您可以自己滚动轻量级模板系统。

或者使用Rails或Merb或Sinatra。

+0

尽管得票低,布局和模板继承是Rails的一部分,而不是ERB本身。 – 2011-03-07 10:37:51

35
def a 
    ERB.new('<%= yield %>').result(binding) 
end 
a{123} 
#=> "123" 

该呼叫到Kernel#binding是在一个方法中是很重要的,这样的上下文包括块(ERB#result不会拿块)。

+0

我无法得到这个工作。再培训局如何知道它应该在收益率中表现出来? – 2013-02-03 18:58:33

3

您可以使用倾斜,但如果你不想增加额外的依赖关系,这里是你如何能在该局得到一个更好的例子:

require "erb" 

class Controller 
    TEMPLATE = ERB.new("Hello <%= @someone %>\n\n<%= yield %>") 

    def initialize(someone) 
    @someone = someone 
    end 

    def render 
    TEMPLATE.result(self.get_binding { yield }) 
    end 

    def get_binding 
    binding 
    end 
end 

puts Controller.new("World").render { "I'm Jack" } 
# => 
Hello World 

I'm Jack 

我找到了答案here