首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ERB::DefMethod

实用程序模块将eRuby脚本定义为实例方法。

example.rhtml:

代码语言:javascript
复制
<% for item in @items %>
<b><%= item %></b>
<% end %>

example.rb:

代码语言:javascript
复制
require 'erb'
class MyClass
  extend ERB::DefMethod
  def_erb_method('render()', 'example.rhtml')
  def initialize(items)
    @items = items
  end
end
print MyClass.new([10,20,30]).render()

结果:

代码语言:javascript
复制
<b>10</b>

<b>20</b>

<b>30</b>

公共类方法

def_erb_method(methodname, erb_or_fname) Show source

定义methodname 作为当前模块的实例方法,所使用的是ERB对象或eRuby文件

代码语言:javascript
复制
# File lib/erb.rb, line 1040
def def_erb_method(methodname, erb_or_fname)
  if erb_or_fname.kind_of? String
    fname = erb_or_fname
    erb = ERB.new(File.read(fname))
    erb.def_method(self, methodname, fname)
  else
    erb = erb_or_fname
    erb.def_method(self, methodname, erb.filename || '(ERB)')
  end
end

私有实例方法

def_erb_method(methodname, erb_or_fname) Show source

定义methodname作为当前模块的实例方法,使用的是ERB对象或eRuby文件

代码语言:javascript
复制
# File lib/erb.rb, line 1040
def def_erb_method(methodname, erb_or_fname)
  if erb_or_fname.kind_of? String
    fname = erb_or_fname
    erb = ERB.new(File.read(fname))
    erb.def_method(self, methodname, fname)
  else
    erb = erb_or_fname
    erb.def_method(self, methodname, erb.filename || '(ERB)')
  end
end

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com