Mime :: HTML的Ruby文档在哪里?

时间:2014-06-06 21:43:45

标签: ruby-on-rails ruby

假设我们在控制器中有以下自动生成的代码:

def update
  respond_to do |format|
    if @person.update(person_params)
      format.html { redirect_to @person, notice: 'Person was successfully updated.' }
      format.json { render :show, status: :ok, location: @person }
    else
      format.html { render :edit }
      format.json { render json: @person.errors, status: :unprocessable_entity }
    end
  end
end

让我说我很好奇想知道什么是对象format 返回以了解调用的jsonhtml对象。回答这些简单问题的文件在哪里?

我试过了ri format,得到了这个(等等):

Returns the MIME type for the format used in the request.

GET /posts/5.xml   | request.format => Mime::XML
GET /posts/5.xhtml | request.format => Mime::HTML
GET /posts/5       | request.format => Mime::HTML or MIME::JS, or request.accepts.first

如果我ri Mime::HTML,我明白了:

Nothing known about Mime::HTML

但是有Mime::Type的文档(我认为上面的format返回),并且它声明这个类有一个实例方法method_missing,我想这是什么我们执行format.htmlformat.json时调用。我想知道的是:如果我对method_missing后备技巧是正确的,那么为什么没有Mime::HTML.method_missing的文档?为什么首先没有Mime::HTMLMime::XML的文档?换句话说,Mime::HTMLMime::XMLMime:Type之间的关系是什么?

1 个答案:

答案 0 :(得分:1)

阅读本文:

https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/mime_types.rb

而且:

https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/mime_type.rb#L162-L174

要回答您的问题:Mime::HTMLMime::XML是动态生成的常量,使用Mime::Type.register