This project is archived and is in readonly mode.

#296 ✓invalid
Jaroslaw Zabiello

render_to_string is completely broken

Reported by Jaroslaw Zabiello | June 2nd, 2008 @ 09:12 AM

class MyController < ApplicationController
  def index	 
    @x = render_to_string :controller => 'i_do_not_exists'
  end
end

There is no exception raised if I use :controller which does not exist at all. Whatever options I use, @x always contains app/views/my/index.html.erb file content (even for existing controllers render_to_string ignore every parameter)

Comments and changes to this ticket

  • Pratik

    Pratik June 2nd, 2008 @ 12:18 PM

    • State changed from “new” to “incomplete”

    Use render_to_string :template => 'i_do_not_exists/index'

    What is the behavior in Rails 2.0.x ?

  • Jaroslaw Zabiello

    Jaroslaw Zabiello June 2nd, 2008 @ 01:46 PM

    I do NOT want to render just another template (without its action). I want to render another action. I have just checked and I see it is broken for RoR 2.0.2 and 2.1.0 as well. Therefore information displayed in api.rubyonrails.org is misleading and wrong (capitalization is mine):

    render_to_string(options = nil, &block) 
    
    Renders according to THE SAME RULES AS RENDER, but returns the result in a string instead of sending it as the response body to the browser. 
    
    # app/views/controllers/my_controller.rb:
    
    class MyController < ApplicationController
      def index 
        @slot = render_to_string :action => 'second'
      end
      
      def second    
        @var = 'World'
        render :text => 'It will never be displayed from host/my!' 
      end
    end
           
    
    # app/views/my/index.html.erb:
    
    Slot: <%= @slot %> 
             
    # app/views/my/second.html.erb:
    
    Hello <%= @msg %>! 
    
    

    Result at http://localhost:3000/my:

    Result:

    Slot: Hello !
    

    The @msg variable was not rendered at all. render :text was also ignored at all. It looks like render_to_string ignores Ruby code in the action.

  • Pratik

    Pratik June 2nd, 2008 @ 01:49 PM

    • State changed from “incomplete” to “invalid”

    You cannot render another action. render_to_string is only for rendering templates. It will not call action code.

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>

People watching this ticket

Tags

Pages