在Rails 3中为VCF添加渲染器

时间:2011-05-06 00:27:59

标签: ruby-on-rails ruby-on-rails-3

我正在尝试添加渲染器以允许我的某个模型响应.vcf格式。我已将以下代码添加到vcf_renderer.rb目录中的initializers文件中:

Mime::Type.register 'text/x-vcard', :vcf
ActionController::Renderers.add :vcf do |object, options|
  exit! # Testing to see if this even gets called at all...
end

似乎以下代码永远不会被执行,因为如果我去/model/123.vcf我得到“模板丢失”错误。

有谁知道为什么似乎没有调用ActionController::Renderers.add块?

AuthorsController.rb

respond_to :vcf

def show

  respond_with(@author)

end

1 个答案:

答案 0 :(得分:6)

似乎旧样式有效,执行渲染器format.vcf { render :vcf => @object }

使用respond_with(现在提出“缺少模板”),您必须add a to_vcf method in the models。尝试show并且它有效(对于index,它无法识别数组的to_vcf

# config/initializers/vcf_renderer.rb
Mime::Type.register 'text/x-vcard', :vcf
ActionController::Renderers.add :vcf do |object, options|
  self.content_type ||= 'text/x-vcard'
  self.response_body  = object.respond_to?(:to_vcf) ? object.to_vcf : object
end