And*_*ndy 4 xml view ruby-on-rails-3
在Rails 3.1中处理自定义XML响应的正确方法是什么?
在Rails 2中,我在我的控制器中执行了以下操作:
# GET the blog as a feed
def feed
@blog = Blog.find(:first, :id => params[:id]])
@blog_id = @blog.id
@blog_posts = BlogPost.find(:all, :conditions => ["blog_id = ? AND is_complete = ?", @blog_id, true], :order => "blog_posts.created_at DESC", :limit => 15)
render :action => :feed, :layout => false
end
Run Code Online (Sandbox Code Playgroud)
然后是视图中的RXML构建器模板'feed.rxml':
xml.instruct! :xml, :version=>"1.0"
xml.rss(:version=>"2.0") {
xml.channel {
xml.title(@blog.title)
xml.link(url_for(:only_path => false))
xml.description(@blog.subtitle)
xml.language('en-us')
for blog_post in @blog_posts
xml.item do
xml.title(blog_post.title || '')
xml.link(blog_named_link(blog_post))
xml.description(blog_post.body)
xml.tag(blog_post.tag_string)
xml.posted_by(blog_post.posted_by.name)
end
end
}
}
Run Code Online (Sandbox Code Playgroud)
Rails 3.1已经删除了RXML模板处理程序,但我似乎无法找到关于我们应该用它替换它的文档.
首先respond_to在您的操作方法中添加部分
respond_to do |format|
format.xml
end
Run Code Online (Sandbox Code Playgroud)
或者只是添加respond_to :html, :xml内部控制器类定义
然后将模板文件重命名为 feed.xml.builder
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |