Использование параметров Rails to_xml (: method =>) требует, чтобы метод был заключен в cdata - PullRequest
3 голосов
/ 19 июня 2010

Я использую 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 ]

2 голосов
/ 17 марта 2011

В 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
)
...
0 голосов
/ 21 июня 2010

Простой обходной путь: Методы => [: encoded_thumb_cdata] и оберните этот метод в вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...