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

Dwa*_*fer 2 xml format variables ruby-on-rails render

典型用法是:

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @users }
end
Run Code Online (Sandbox Code Playgroud)

现在我想传递一个名为"teststring"的字符串.

我见过参考使用

:local => {:users => @users, :another => @another}
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Jon*_*ier 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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

(你可以在这里阅读有关ActiveRecord的to_xml方法.)