代码之家  ›  专栏  ›  技术社区  ›  Gordon Isnor

使用rails-to-xml(:methods=>)选项需要将方法包装为CDATA

  •  3
  • Gordon Isnor  · 技术社区  · 16 年前

    我正在使用Rails 2.3.4和“ to_xml “与 :methods => option ,我想包括一个base64编码的缩略图图像。

    我是否可以指定该方法需要包装在一个CDATA标记中?

    例子:

      render :xml => @items.to_xml(
        :include => [:photos,:comments], 
        :methods => [:encoded_thumb]) { |xml| 
          xml.tag! 'total-entries', @items.total_entries 
          xml.tag! 'per-page', @items.per_page 
        }
      }
    
    2 回复  |  直到 13 年前
        1
  •  2
  •   Vincent    15 年前

    在Rails 3中,您可以使用 Proc :

    encoded_thumb = Proc.new do |options, item|
      options[:builder].tag!('encoded_thumb') do
        options[:builder].cdata!(item.encoded_thumb)
      end
    end
    
    render :xml => @items.to_xml(
      :include => [:photos,:comments],
      :procs   => encoded_thumb
    )
    ...
    
        2
  •  0
  •   Andrew Vit    16 年前

    一个简单的解决方法是:methods=>[:encoded_thumb_cdata],并将该方法包装到您的模型中。