我正在尝试添加渲染器以允许我的某个模型响应.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
答案 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