典型用法是:
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命令以相同的名称传递?
感谢。
答案 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。)