在rails中注册自定义MIME :: Type

时间:2014-12-09 11:18:21

标签: ruby-on-rails

根据我的需要,我尝试按以下方式注册自定义MIME :: Type(包括 text / plain

Mime::Type.register_alias "application/json", :my_json, %w( text/plain text/x-json application/jsonrequest )

但是当我在rails console中运行以下命令时

Mime::MY_JSON

它提供输出

#<Mime::Type:0x1739e5b0 @synonyms=[], @symbol=:my_json, @string="application/json">

这里,@ synames是空数组。

但是,我希望输出像Mime::JSON =&gt; #<Mime::Type:0x53231d8 @synonyms=["text/x-json", "application/jsonrequest"], @symbol=:json, @string="application/json">

所以我可以像以下一样使用它:

render :my_json => SomeJSON

需要做什么?

修改

这是我在config / initializers中的条目

Mime::Type.register_alias "application/json", :my_json, %w( text/plain text/x-json application/jsonrequest )

2 个答案:

答案 0 :(得分:0)

由于这是一个非常古老的问题,对Rails 6的回答如下-

  • 要注册自定义的mime类型,应使用config/initializers/mime_types.rb。在下面添加类似的行(如Rails Guides中所述)-
Mime::Type.register 'application/json', :my_json, %w( text/plain text/x-json application/jsonrequest )

请不要在这里,如果您遵循Mime::Type API,则extension_synonyms参数由符号而不是字符串组成。

  • 要获取具有string名称的mime类型,请使用-
Mime::Type.lookup('application/json')
  • 要获取具有symbol名称的mime类型,请使用-
Mime::Type.lookup_by_extension(:my_json)

答案 1 :(得分:-1)

根据paulasmuthCustom MIME类型也可以在控制器中完成。只需从控制器中调用此register方法即可。

Mime::Type.register "application/json", :my_json, %w( text/plain text/x-json application/jsonrequest )

您的mime类型现在可以在respond_to块中使用:

respond_to do
 format :your_mime_type do 
  #do something
 end
end

希望这会有所帮助:)