Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 8b99df826c3b6cf56a1caaae5f931d50 > files > 204

ruby-actionpack-2.3.4-1mdv2010.0.noarch.rpm

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
  <title>render (ActionController::Base)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
  <pre><span class="ruby-comment cmt"># File lib/action_controller/base.rb, line 899</span>
      <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>(<span class="ruby-identifier">options</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">extra_options</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment cmt">#:doc:</span>
        <span class="ruby-identifier">raise</span> <span class="ruby-constant">DoubleRenderError</span>, <span class="ruby-value str">&quot;Can only render or redirect once per action&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">performed?</span>

        <span class="ruby-identifier">validate_render_arguments</span>(<span class="ruby-identifier">options</span>, <span class="ruby-identifier">extra_options</span>, <span class="ruby-identifier">block_given?</span>)

        <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">nil?</span>
          <span class="ruby-identifier">options</span> = { <span class="ruby-identifier">:template</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">default_template</span>, <span class="ruby-identifier">:layout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span> }
        <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:update</span>
          <span class="ruby-identifier">options</span> = <span class="ruby-identifier">extra_options</span>.<span class="ruby-identifier">merge</span>({ <span class="ruby-identifier">:update</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span> })
        <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>)
          <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'/'</span>)
          <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
            <span class="ruby-identifier">extra_options</span>[<span class="ruby-identifier">:file</span>] = <span class="ruby-identifier">options</span>
          <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>
            <span class="ruby-identifier">extra_options</span>[<span class="ruby-identifier">:action</span>] = <span class="ruby-identifier">options</span>
          <span class="ruby-keyword kw">else</span>
            <span class="ruby-identifier">extra_options</span>[<span class="ruby-identifier">:template</span>] = <span class="ruby-identifier">options</span>
          <span class="ruby-keyword kw">end</span>

          <span class="ruby-identifier">options</span> = <span class="ruby-identifier">extra_options</span>
        <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
          <span class="ruby-identifier">extra_options</span>[<span class="ruby-identifier">:partial</span>] = <span class="ruby-identifier">options</span>
          <span class="ruby-identifier">options</span> = <span class="ruby-identifier">extra_options</span>
        <span class="ruby-keyword kw">end</span>

        <span class="ruby-identifier">layout</span> = <span class="ruby-identifier">pick_layout</span>(<span class="ruby-identifier">options</span>)
        <span class="ruby-identifier">response</span>.<span class="ruby-identifier">layout</span> = <span class="ruby-identifier">layout</span>.<span class="ruby-identifier">path_without_format_and_extension</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">layout</span>
        <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Rendering template within #{layout.path_without_format_and_extension}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">logger</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">layout</span>

        <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">content_type</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:content_type</span>]
          <span class="ruby-identifier">response</span>.<span class="ruby-identifier">content_type</span> = <span class="ruby-identifier">content_type</span>.<span class="ruby-identifier">to_s</span>
        <span class="ruby-keyword kw">end</span>

        <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">location</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:location</span>]
          <span class="ruby-identifier">response</span>.<span class="ruby-identifier">headers</span>[<span class="ruby-value str">&quot;Location&quot;</span>] = <span class="ruby-identifier">url_for</span>(<span class="ruby-identifier">location</span>)
        <span class="ruby-keyword kw">end</span>

        <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">:text</span>)
          <span class="ruby-identifier">text</span> = <span class="ruby-identifier">layout</span> <span class="ruby-value">? </span><span class="ruby-ivar">@template</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:text</span>], <span class="ruby-identifier">:layout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">layout</span>)) <span class="ruby-operator">:</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:text</span>]
          <span class="ruby-identifier">render_for_text</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

        <span class="ruby-keyword kw">else</span>
          <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:file</span>]
            <span class="ruby-identifier">render_for_file</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>], <span class="ruby-identifier">layout</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:locals</span>] <span class="ruby-operator">||</span> {})

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">template</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:template</span>]
            <span class="ruby-identifier">render_for_file</span>(<span class="ruby-identifier">template</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>], <span class="ruby-identifier">layout</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:locals</span>] <span class="ruby-operator">||</span> {})

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">inline</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:inline</span>]
            <span class="ruby-identifier">render_for_text</span>(<span class="ruby-ivar">@template</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">:layout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">layout</span>)), <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">action_name</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:action</span>]
            <span class="ruby-identifier">render_for_file</span>(<span class="ruby-identifier">default_template</span>(<span class="ruby-identifier">action_name</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>], <span class="ruby-identifier">layout</span>)

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:xml</span>]
            <span class="ruby-identifier">response</span>.<span class="ruby-identifier">content_type</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Mime</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span>
            <span class="ruby-identifier">render_for_text</span>(<span class="ruby-identifier">xml</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_xml</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">to_xml</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">js</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:js</span>]
            <span class="ruby-identifier">response</span>.<span class="ruby-identifier">content_type</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Mime</span><span class="ruby-operator">::</span><span class="ruby-constant">JS</span>
            <span class="ruby-identifier">render_for_text</span>(<span class="ruby-identifier">js</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:json</span>)
            <span class="ruby-identifier">json</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:json</span>]
            <span class="ruby-identifier">json</span> = <span class="ruby-constant">ActiveSupport</span><span class="ruby-operator">::</span><span class="ruby-constant">JSON</span>.<span class="ruby-identifier">encode</span>(<span class="ruby-identifier">json</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">json</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
            <span class="ruby-identifier">json</span> = <span class="ruby-node">&quot;#{options[:callback]}(#{json})&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:callback</span>].<span class="ruby-identifier">blank?</span>
            <span class="ruby-identifier">response</span>.<span class="ruby-identifier">content_type</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Mime</span><span class="ruby-operator">::</span><span class="ruby-constant">JSON</span>
            <span class="ruby-identifier">render_for_text</span>(<span class="ruby-identifier">json</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:partial</span>]
            <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:partial</span>] = <span class="ruby-identifier">default_template_name</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:partial</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
            <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">layout</span>
              <span class="ruby-identifier">render_for_text</span>(<span class="ruby-ivar">@template</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@template</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">options</span>), <span class="ruby-identifier">:layout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">layout</span>), <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])
            <span class="ruby-keyword kw">else</span>
              <span class="ruby-identifier">render_for_text</span>(<span class="ruby-ivar">@template</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">options</span>), <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])
            <span class="ruby-keyword kw">end</span>

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:update</span>]
            <span class="ruby-ivar">@template</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">:_evaluate_assigns_and_ivars</span>)

            <span class="ruby-identifier">generator</span> = <span class="ruby-constant">ActionView</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span><span class="ruby-operator">::</span><span class="ruby-constant">PrototypeHelper</span><span class="ruby-operator">::</span><span class="ruby-constant">JavaScriptGenerator</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@template</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
            <span class="ruby-identifier">response</span>.<span class="ruby-identifier">content_type</span> = <span class="ruby-constant">Mime</span><span class="ruby-operator">::</span><span class="ruby-constant">JS</span>
            <span class="ruby-identifier">render_for_text</span>(<span class="ruby-identifier">generator</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

          <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:nothing</span>]
            <span class="ruby-identifier">render_for_text</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>])

          <span class="ruby-keyword kw">else</span>
            <span class="ruby-identifier">render_for_file</span>(<span class="ruby-identifier">default_template</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:status</span>], <span class="ruby-identifier">layout</span>)
          <span class="ruby-keyword kw">end</span>
        <span class="ruby-keyword kw">end</span>
      <span class="ruby-keyword kw">end</span></pre>
</body>
</html>