使用struct in action方法

时间:2012-05-02 09:27:22

标签: ruby-on-rails-3 controller xml-serialization

我想将对象创建为struct并将其发送为xml:

  def index
   katie = Struct.new(:name, :gender, :age).new("Katie", "F", 18)
   render :xml => katie
  end

但我收到错误:

  

未定义的方法`bytesize'为18:Fixnum

有人可以给我任何建议吗?

1 个答案:

答案 0 :(得分:0)

我知道这是在原始问题之后很久,但这是另一个答案:

使用ActiveModel实现一个类并包含序列化支持。

class Person
  include ActiveModel::Serializers::Xml #also include json
  include ActiveModel::Model

  attr_accessor :name, :gender, :age

  def attributes
    {name: name, gender: gender, age: age}
  end
end

#and in your controller
def index  
  # should use a respond_to do |format| here
  render :xml => Person.new(:name => 'Katie', :gender => 'F', :age => 18)
end