Rails format.xml呈现并传递多个变量

时间:2011-04-11 01:56:59

标签: ruby-on-rails xml variables format render

典型用法是:

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @users }
end

现在我想传递一个名为“teststring”的字符串。

我见过使用

的参考资料
:local => {:users => @users, :another => @another}

但我不知道如何将两者合并在一起。我只是没有看到所有的东西。没有太多文档来真正解释:该行中的xml。我不知道我是否可以处理字符串:teststring =>的TestString?

最后,如果我有多个变量,我如何在index.html.erb中处理它们?它们是否从render命令以相同的名称传递?

感谢。

1 个答案:

答案 0 :(得分:11)

如果要呈现自定义XML,则需要在控制器的相应视图目录中创建index.xml.erb文件。它就像你使用的任何HTML模板一样工作,然后:

app/controllers/home_controller.rb

def index
    @users = ...
    @another = "Hello world!"

    # this `respond_to` block isn't necessary in this case -
    # Rails will detect the index.xml.erb file and render it
    # automatically for requests for XML
    respond_to do |format|
        format.html # index.html.erb
        format.xml # index.xml.erb
    end
end

app/views/home/index.xml.erb

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <%= @users.to_xml # serialize the @users variable %>
    <extra_string><%= @another %></extra_string>
</document>

(您可以阅读ActiveRecord的to_xml方法here。)