加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Rails 3.1替换RXML模板生成器

发布时间:2020-12-17 02:53:20 所属栏目:百科 来源:网络整理
导读:在Rails 3.1中处理自定义 XML响应的正确方法是什么? 在Rails 2中,我在我的控制器中执行了以下操作: # GET the blog as a feeddef feed @blog = Blog.find(:first,:id = params[:id]]) @blog_id = @blog.id @blog_posts = BlogPost.find(:all,:conditions =
在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

然后是视图中的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  
    }
}

Rails 3.1已经删除了RXML模板处理程序,但我似乎无法找到有关我们应该用它替换它的文档.

解决方法

首先将respond_to部分添加到您的操作方法中

respond_to do |format|
  format.xml
end

或者只是在控制器类定义中添加respond_to:html,:xml

然后将模板文件重命名为feed.xml.builder

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读