新手问题 block 类型的参数怎么看 api?

i5ting · 2013年02月20日 · 最后由 badboy 回复于 2013年02月20日 · 2563 次阅读

比如 render,form_for 之类的,在查看文档的时候,得到的信息不充分啊

谁有好办法啊?

类似问题的人很多,比如http://ruby-china.org/topics/8784

文档那么多,不可能完美的。针对具体的需求谈吧。

一般就是看描述和例子。

用 IDE 就能看到文档内容,netbeans 或者 rubymine 都可以 安装 ctrl 然后鼠标点 render 方法名,然后就到源码了,注释就是 ruby 的文档内容了

ruby 好像有个可以产生文档的命令,会把注释都添加到文档里,忘了是啥,谁知道的补上

#2 楼 @badboy

问题是 render(context, options) Main render entry point shared by AV and AC.

Source: hide | on GitHub

    # File actionpack/lib/action_view/renderer/renderer.rb, line 13
13:     def render(context, options)
14:       if options.key?(:partial)
15:         render_partial(context, options)
16:       else
17:         render_template(context, options)
18:       end
19:     end

这样的源码,看不出什么啊,这才是我觉得蛋疼的地方

apidock 去看看,有解释的。

这是我用 netbeans 按 ctrl + 鼠标左键点击 render 出来滴:

C:\Ruby187\lib\ruby\gems\1.8\gems\actionpack-3.2.8\lib\action_view\helpers\rendering_helper.rb

module ActionView
  module Helpers
    # = Action View Rendering
    #
    # Implements methods that allow rendering from a view context.
    # In order to use this module, all you need is to implement
    # view_renderer that returns an ActionView::Renderer object.
    module RenderingHelper
      # Returns the result of a render that's dictated by the options hash. The primary options are:
      #
      # * <tt>:partial</tt> - See <tt>ActionView::PartialRenderer</tt>.
      # * <tt>:file</tt> - Renders an explicit template file (this used to be the old default), add :locals to pass in those.
      # * <tt>:inline</tt> - Renders an inline template similar to how it's done in the controller.
      # * <tt>:text</tt> - Renders the text passed in out.
      #
      # If no options hash is passed or :update specified, the default is to render a partial and use the second parameter
      # as the locals hash.
      def render(options = {}, locals = {}, &block)
        case options
        when Hash
          if block_given?
            view_renderer.render_partial(self, options.merge(:partial => options[:layout]), &block)
          else
            view_renderer.render(self, options)
          end
        else
          view_renderer.render_partial(self, :partial => options, :locals => locals)
        end
      end

看到这个注释很熟悉了吗?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号