Edge Rails 的更新: mime::type 中简便的方法

Posted by yudi
on Monday, December 17


大家都知道使用 respond_to 的好处。respond_to 将访问中的mime类型成功的囊括到其小而精致的结构里,而且访问里的mime类型在很多其他地方的应用比查询语句更加有效。比如,在 根据不同访问的类型 选择应用不同的过滤行为总是有好处的。今天起您将可以通过新的 request.format.html?,request.format.xml? 等语句方便得完成任务。

1
2
3
4
5
6
7
8
9
class MyController < ApplicationController

  # 针对访问类型切换登录授权方法
  before_filter do |c|
    c.use_session_auth if c.request.format.html?
    c.use_token_auth if c.request.format.xml?
  end

end

或者您也可以使用简洁的方法来关闭sessions (来自变更列表的示例):

1
2
3
4
5
6
class MyController < ApplicationController

  # 为所有非html访问关闭session功能
  sessions :off, :if => Proc.new { |request| not request.format.html? }

end

总结的说,那些令人讨厌又不得不需要鉴定的 mime类型 终于可以被完好的解决。这些代码不但可以识别”市面“上认可的 mime类型,它们还可以用来识别您为自己注册的 mime类型。

1
2
3
4
5
6
7
8
9
# 因为我想大家都同意我值得拥有自己的mime-type
Mime::Type.register "text/ryan", :ryan

class MyController < ApplicationController

  # 为所有ryan的访问关闭session功能
  sessions :off, :if => Proc.new { |request| request.format.ryan? }

end

原文作者是 Ryan Daigle, 请访问他的博客
本片译文的原文地址:http://ryandaigle.com/articles/2007/2/15/what-s-new-in-edge-rails-mime-type-convenience-methods

Comments

Leave a response

  1. RagnarokDecember 18, 2007 @ 04:45 AM

    而且访问里的mime类型在很多其他地方的应用比查询语句更加有效。 (‘里’是什么,’应用’->再加多个’中’)

    我觉得应该不是这样的意思吧 我的翻译:但对mime-类型来说在其它地方中查询也是挺有用的.(我不知道mime- type是什么!) 如果有什么错误请指出来!