当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby ERB.new用法及代码示例


本文简要介绍ruby语言中 ERB.new 的用法。

用法

new(str, safe_level=NOT_GIVEN, legacy_trim_mode=NOT_GIVEN, legacy_eoutvar=NOT_GIVEN, trim_mode: nil, eoutvar: '_erbout')

使用 str 中指定的模板构造一个新的 ERB 对象。

ERB 对象通过构建一段 Ruby 代码来工作,该代码将在运行时输出完整的模板。

如果 trim_mode 传递了包含以下一个或多个修饰符的 String ,则 ERB 将调整其代码生成,如下所示:

%  enables Ruby code processing for lines beginning with %
<> omit newline for lines starting with <% and ending in %>
>  omit newline for lines ending in %>
-  omit blank lines ending in -%>

eoutvar 可用于设置变量的名称 ERB 将在其中构建其输出。当您需要通过相同的绑定运行多个 ERB 模板和/或当您想要控制输出位置时,这很有用结束。传递要在 String 中使用的变量的名称。

示例

require "erb"

# build data class
class Listings
  PRODUCT = { :name => "Chicken Fried Steak",
              :desc => "A well messages pattie, breaded and fried.",
              :cost => 9.95 }

  attr_reader :product, :price

  def initialize( product = "", price = "" )
    @product = product
    @price = price
  end

  def build
    b = binding
    # create and run templates, filling member data variables
    ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), trim_mode: "", eoutvar: "@product").result b
      <%= PRODUCT[:name] %>
      <%= PRODUCT[:desc] %>
    END_PRODUCT
    ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), trim_mode: "", eoutvar: "@price").result b
      <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %>
      <%= PRODUCT[:desc] %>
    END_PRICE
  end
end

# setup template data
listings = Listings.new
listings.build

puts listings.product + "\n" + listings.price

Generates

Chicken Fried Steak
A well messages pattie, breaded and fried.

Chicken Fried Steak -- 9.95
A well messages pattie, breaded and fried.

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 ERB.new。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。